Comment data structures. Also squash pointers in resolve_type_name to
authorColin Walters <walters@verbum.org>
Thu, 14 Aug 2008 16:09:06 +0000 (16:09 +0000)
committerColin Walters <walters@src.gnome.org>
Thu, 14 Aug 2008 16:09:06 +0000 (16:09 +0000)
2008-08-14  Colin Walters  <walters@verbum.org>

* giscanner/transformer.py: Comment data structures.
Also squash pointers in resolve_type_name to correspond
with what we do for params.
* giscanner/glibtransformer.py: Print warnings in more
situations.  Rework checks for method/constructor to
look up in our GType database instead of just checking
for *.   Avoid generating <record> for GObject which
duplicate the <class>.
* gir/Makefile.am: Generate glib-2.0.gir and gobject-2.0.gir
in here.

svn path=/trunk/; revision=373

ChangeLog
gir/Makefile.am
gir/gobject-2.0.gir
girepository/girparser.c
giscanner/glibtransformer.py
giscanner/transformer.py

index d24c507..4747461 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2008-08-14  Colin Walters  <walters@verbum.org>
+
+       * giscanner/transformer.py: Comment data structures.
+       Also squash pointers in resolve_type_name to correspond
+       with what we do for params.
+       * giscanner/glibtransformer.py: Print warnings in more
+       situations.  Rework checks for method/constructor to
+       look up in our GType database instead of just checking
+       for *.   Avoid generating <record> for GObject which
+       duplicate the <class>.
+       * gir/Makefile.am: Generate glib-2.0.gir and gobject-2.0.gir
+       in here.
+
 2008-08-14  Johan Dahlin  <johan@gnome.org>
 
        * giscanner/girwriter.py:
index dce5152..f2a0590 100644 (file)
@@ -1,2 +1,33 @@
-girdir = $(datadir)/gir
-dist_gir_DATA = gobject-2.0.gir
+BUILT_SOURCES = 
+
+G_IR_SCANNER = $(top_srcdir)/tools/g-ir-scanner
+
+# glib
+GLIB_INCLUDEDIR=`pkg-config --variable=includedir glib-2.0`/glib-2.0
+GLIB_LIBDIR=`pkg-config --variable=libdir glib-2.0`
+glib-2.0.gir: $(G_IR_SCANNER)
+       $(G_IR_SCANNER) -v --namespace GLib \
+           --output $@ \
+           --strip-prefix=g \
+           -I$(GLIB_INCLUDEDIR) \
+           -I$(GLIB_LIBDIR)/glib-2.0/include \
+           -DGETTEXT_PACKAGE=Dummy \
+           $(GLIB_INCLUDEDIR)/glib/*.h
+BUILT_SOURCES += glib-2.0.gir
+
+# gobject
+GOBJECT_LIBDIR=`pkg-config --variable=libdir gobject-2.0`
+gobject-2.0.gir: $(G_IR_SCANNER)
+       $(G_IR_SCANNER) -v --namespace GObject \
+           --output $@ \
+           --strip-prefix=g \
+            --include=glib-2.0.gir \
+           -I$(GLIB_INCLUDEDIR) \
+           -I$(GLIB_LIBDIR)/glib-2.0/include \
+           -DGOBJECT_COMPILATION \
+            --pkg glib-2.0 \
+           $(GLIB_INCLUDEDIR)/gobject/*.h
+BUILT_SOURCES += gobject-2.0.gir
+
+girdir=$(datadir)/gir
+dist_gir_DATA = $(BUILT_SOURCES)
\ No newline at end of file
index cb0ff0b..71fe684 100644 (file)
             xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
   <namespace name="GObject">
     <alias name="GType" target="gsize"/>
-    <class name="Object"
-           glib:type-name="GObject"
-           glib:get-type="intern">
-    </class>
-    <class name="InitiallyUnowned"
-           parent="Object"
-           glib:type-name="GInitiallyUnowned"
-           glib:get-type="g_initially_unowned_get_type">
-    </class>
-    <callback name="GSignalEmissionHook">
+    <alias name="GTypeCValue" target="_GTypeCValue"/>
+    <alias name="GSignalCMarshaller" target="GClosureMarshal"/>
+    <record name="Value" c:type="GValue"/>
+    <record name="TypePlugin" c:type="GTypePlugin"/>
+    <record name="TypeInstance" c:type="GTypeInstance"/>
+    <record name="TypeInfo" c:type="GTypeInfo"/>
+    <record name="TypeFundamentalInfo" c:type="GTypeFundamentalInfo"/>
+    <record name="InterfaceInfo" c:type="GInterfaceInfo"/>
+    <record name="TypeValueTable" c:type="GTypeValueTable"/>
+    <record name="TypeQuery" c:type="GTypeQuery"/>
+    <record name="GTypeInstance" c:type="_GTypeInstance">
+      <field name="g_class">
+        <type name="GTypeClass" c:type="GTypeClass*"/>
+      </field>
+    </record>
+    <record name="GTypeQuery" c:type="_GTypeQuery">
+      <field name="type">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="type_name">
+        <type name="string" c:type="gchar*"/>
+      </field>
+      <field name="class_size">
+        <type name="uint32" c:type="guint"/>
+      </field>
+      <field name="instance_size">
+        <type name="uint32" c:type="guint"/>
+      </field>
+    </record>
+    <enumeration name="gtypedebugflags" 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"/>
+    </enumeration>
+    <function name="type_init" c:identifier="g_type_init">
+      <return-value>
+        <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>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="debug_flags">
+          <type name="GTypeDebugFlags" c:type="GTypeDebugFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_name" c:identifier="g_type_name">
+      <return-value>
+        <type name="string" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_qname" c:identifier="g_type_qname">
+      <return-value>
+        <type name="GLib.GQuark" c:type="GQuark"/>
+      </return-value>
+      <parameters>
+        <parameter name="type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_from_name" c:identifier="g_type_from_name">
+      <return-value>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_parent" c:identifier="g_type_parent">
+      <return-value>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_depth" c:identifier="g_type_depth">
+      <return-value>
+        <type name="uint32" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_next_base" c:identifier="g_type_next_base">
+      <return-value>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="leaf_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="root_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_is_a" c:identifier="g_type_is_a">
       <return-value>
         <type name="boolean" c:type="gboolean"/>
       </return-value>
       <parameters>
-        <parameter name="ihint">
-          <type name="GSignalInvocationHint" c:type="GSignalInvocationHint*"/>
+        <parameter name="type">
+          <type name="GType" c:type="GType"/>
         </parameter>
-        <parameter name="n_param_values">
-          <type name="uint32" c:type="guint"/>
+        <parameter name="is_a_type">
+          <type name="GType" c:type="GType"/>
         </parameter>
-        <parameter name="param_values">
-          <type name="GValue" c:type="GValue*"/>
+      </parameters>
+    </function>
+    <function name="type_class_ref" c:identifier="g_type_class_ref">
+      <return-value>
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_class_peek" c:identifier="g_type_class_peek">
+      <return-value>
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_class_peek_static"
+              c:identifier="g_type_class_peek_static">
+      <return-value>
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_class_unref" c:identifier="g_type_class_unref">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_class">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_class_peek_parent"
+              c:identifier="g_type_class_peek_parent">
+      <return-value>
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_class">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_interface_peek" c:identifier="g_type_interface_peek">
+      <return-value>
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance_class">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="iface_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_interface_peek_parent"
+              c:identifier="g_type_interface_peek_parent">
+      <return-value>
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_iface">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_default_interface_ref"
+              c:identifier="g_type_default_interface_ref">
+      <return-value>
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_default_interface_peek"
+              c:identifier="g_type_default_interface_peek">
+      <return-value>
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_default_interface_unref"
+              c:identifier="g_type_default_interface_unref">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_iface">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_children" c:identifier="g_type_children">
+      <return-value>
+        <type name="GType" c:type="GType*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="n_children">
+          <type name="GLib.guint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_interfaces" c:identifier="g_type_interfaces">
+      <return-value>
+        <type name="GType" c:type="GType*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="n_interfaces">
+          <type name="GLib.guint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_set_qdata" c:identifier="g_type_set_qdata">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="quark">
+          <type name="GLib.GQuark" c:type="GQuark"/>
         </parameter>
         <parameter name="data">
           <type name="any" c:type="gpointer"/>
         </parameter>
       </parameters>
+    </function>
+    <function name="type_get_qdata" c:identifier="g_type_get_qdata">
+      <return-value>
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="quark">
+          <type name="GLib.GQuark" c:type="GQuark"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_query" c:identifier="g_type_query">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="query">
+          <type name="GTypeQuery" c:type="GTypeQuery*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <callback name="GBaseInitFunc">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_class">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
     </callback>
-    <record name="ValueArray" c:type="GValueArray"/>
-    <record name="GValueArray" c:type="_GValueArray">
-      <field name="n_values">
-        <type name="uint32" c:type="guint"/>
+    <callback name="GBaseFinalizeFunc">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_class">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GClassInitFunc">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_class">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="class_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GClassFinalizeFunc">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_class">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="class_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GInstanceInitFunc">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance">
+          <type name="GTypeInstance" c:type="GTypeInstance*"/>
+        </parameter>
+        <parameter name="g_class">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GInterfaceInitFunc">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_iface">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="iface_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GInterfaceFinalizeFunc">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_iface">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="iface_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GTypeClassCacheFunc">
+      <return-value>
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="cache_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="g_class">
+          <type name="GTypeClass" c:type="GTypeClass*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GTypeInterfaceCheckFunc">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="check_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="g_iface">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="gtypefundamentalflags" c:type="GTypeFundamentalFlags">
+      <member name="lag_classed" value="1" c:identifier="G_TYPE_FLAG_CLASSED"/>
+      <member name="lag_instantiatable"
+              value="2"
+              c:identifier="G_TYPE_FLAG_INSTANTIATABLE"/>
+      <member name="lag_derivable"
+              value="4"
+              c:identifier="G_TYPE_FLAG_DERIVABLE"/>
+      <member name="lag_deep_derivable"
+              value="8"
+              c:identifier="G_TYPE_FLAG_DEEP_DERIVABLE"/>
+    </enumeration>
+    <enumeration name="gtypeflags" 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"/>
+    </enumeration>
+    <record name="GTypeInfo" c:type="_GTypeInfo">
+      <field name="class_size">
+        <type name="uint16" c:type="guint16"/>
       </field>
-      <field name="values">
-        <type name="GValue" c:type="GValue*"/>
+      <field name="base_init">
+        <type name="GBaseInitFunc" c:type="GBaseInitFunc"/>
       </field>
-      <field name="n_prealloced">
-        <type name="uint32" c:type="guint"/>
+      <field name="base_finalize">
+        <type name="GBaseFinalizeFunc" c:type="GBaseFinalizeFunc"/>
+      </field>
+      <field name="class_init">
+        <type name="GClassInitFunc" c:type="GClassInitFunc"/>
+      </field>
+      <field name="class_finalize">
+        <type name="GClassFinalizeFunc" c:type="GClassFinalizeFunc"/>
+      </field>
+      <field name="class_data">
+        <type name="gconstpointer" c:type="gconstpointer"/>
+      </field>
+      <field name="instance_size">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="n_preallocs">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="instance_init">
+        <type name="GInstanceInitFunc" c:type="GInstanceInitFunc"/>
+      </field>
+      <field name="value_table">
+        <type name="GTypeValueTable" c:type="GTypeValueTable*"/>
+      </field>
+    </record>
+    <record name="GTypeFundamentalInfo" c:type="_GTypeFundamentalInfo">
+      <field name="type_flags">
+        <type name="GTypeFundamentalFlags" c:type="GTypeFundamentalFlags"/>
       </field>
     </record>
+    <record name="GInterfaceInfo" c:type="_GInterfaceInfo">
+      <field name="interface_init">
+        <type name="GInterfaceInitFunc" c:type="GInterfaceInitFunc"/>
+      </field>
+      <field name="interface_finalize">
+        <type name="GInterfaceFinalizeFunc" c:type="GInterfaceFinalizeFunc"/>
+      </field>
+      <field name="interface_data">
+        <type name="any" c:type="gpointer"/>
+      </field>
+    </record>
+    <record name="GTypeValueTable" c:type="_GTypeValueTable">
+      <callback name="value_init">
+        <return-value>
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value">
+            <type name="GValue" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </callback>
+      <callback name="value_free">
+        <return-value>
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value">
+            <type name="GValue" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </callback>
+      <callback name="value_copy">
+        <return-value>
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="src_value">
+            <type name="GValue" c:type="GValue*"/>
+          </parameter>
+          <parameter name="dest_value">
+            <type name="GValue" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </callback>
+      <callback name="value_peek_pointer">
+        <return-value>
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="value">
+            <type name="GValue" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </callback>
+      <field name="collect_format">
+        <type name="string" c:type="gchar*"/>
+      </field>
+      <callback name="collect_value">
+        <return-value>
+          <type name="string" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="value">
+            <type name="GValue" c:type="GValue*"/>
+          </parameter>
+          <parameter name="n_collect_values">
+            <type name="uint32" c:type="guint"/>
+          </parameter>
+          <parameter name="collect_values">
+            <type name="GTypeCValue" c:type="GTypeCValue*"/>
+          </parameter>
+          <parameter name="collect_flags">
+            <type name="uint32" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </callback>
+      <field name="lcopy_format">
+        <type name="string" c:type="gchar*"/>
+      </field>
+      <callback name="lcopy_value">
+        <return-value>
+          <type name="string" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="value">
+            <type name="GValue" c:type="GValue*"/>
+          </parameter>
+          <parameter name="n_collect_values">
+            <type name="uint32" c:type="guint"/>
+          </parameter>
+          <parameter name="collect_values">
+            <type name="GTypeCValue" c:type="GTypeCValue*"/>
+          </parameter>
+          <parameter name="collect_flags">
+            <type name="uint32" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </callback>
+    </record>
+    <function name="type_register_static"
+              c:identifier="g_type_register_static">
+      <return-value>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="type_name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="info">
+          <type name="GTypeInfo" c:type="GTypeInfo*"/>
+        </parameter>
+        <parameter name="flags">
+          <type name="GTypeFlags" c:type="GTypeFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_register_static_simple"
+              c:identifier="g_type_register_static_simple">
+      <return-value>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="type_name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="class_size">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="class_init">
+          <type name="GClassInitFunc" c:type="GClassInitFunc"/>
+        </parameter>
+        <parameter name="instance_size">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="instance_init">
+          <type name="GInstanceInitFunc" c:type="GInstanceInitFunc"/>
+        </parameter>
+        <parameter name="flags">
+          <type name="GTypeFlags" c:type="GTypeFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_register_dynamic"
+              c:identifier="g_type_register_dynamic">
+      <return-value>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="type_name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="plugin">
+          <type name="GTypePlugin" c:type="GTypePlugin*"/>
+        </parameter>
+        <parameter name="flags">
+          <type name="GTypeFlags" c:type="GTypeFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_register_fundamental"
+              c:identifier="g_type_register_fundamental">
+      <return-value>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="type_id">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="type_name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="info">
+          <type name="GTypeInfo" c:type="GTypeInfo*"/>
+        </parameter>
+        <parameter name="finfo">
+          <type name="GTypeFundamentalInfo" c:type="GTypeFundamentalInfo*"/>
+        </parameter>
+        <parameter name="flags">
+          <type name="GTypeFlags" c:type="GTypeFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_add_interface_static"
+              c:identifier="g_type_add_interface_static">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="interface_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="info">
+          <type name="GInterfaceInfo" c:type="GInterfaceInfo*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_add_interface_dynamic"
+              c:identifier="g_type_add_interface_dynamic">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="interface_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="plugin">
+          <type name="GTypePlugin" c:type="GTypePlugin*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_interface_add_prerequisite"
+              c:identifier="g_type_interface_add_prerequisite">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="interface_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="prerequisite_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_interface_prerequisites"
+              c:identifier="g_type_interface_prerequisites">
+      <return-value>
+        <type name="GType" c:type="GType*"/>
+      </return-value>
+      <parameters>
+        <parameter name="interface_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="n_prerequisites">
+          <type name="GLib.guint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_class_add_private"
+              c:identifier="g_type_class_add_private">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_class">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="private_size">
+          <type name="size" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_instance_get_private"
+              c:identifier="g_type_instance_get_private">
+      <return-value>
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance">
+          <type name="GTypeInstance" c:type="GTypeInstance*"/>
+        </parameter>
+        <parameter name="private_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_get_plugin" c:identifier="g_type_get_plugin">
+      <return-value>
+        <type name="GTypePlugin" c:type="GTypePlugin*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_interface_get_plugin"
+              c:identifier="g_type_interface_get_plugin">
+      <return-value>
+        <type name="GTypePlugin" c:type="GTypePlugin*"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="interface_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_fundamental_next"
+              c:identifier="g_type_fundamental_next">
+      <return-value>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="type_fundamental" c:identifier="g_type_fundamental">
+      <return-value>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="type_id">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_create_instance"
+              c:identifier="g_type_create_instance">
+      <return-value>
+        <type name="GTypeInstance" c:type="GTypeInstance*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_free_instance" c:identifier="g_type_free_instance">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance">
+          <type name="GTypeInstance" c:type="GTypeInstance*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_add_class_cache_func"
+              c:identifier="g_type_add_class_cache_func">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cache_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="cache_func">
+          <type name="GTypeClassCacheFunc" c:type="GTypeClassCacheFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_remove_class_cache_func"
+              c:identifier="g_type_remove_class_cache_func">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cache_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="cache_func">
+          <type name="GTypeClassCacheFunc" c:type="GTypeClassCacheFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_class_unref_uncached"
+              c:identifier="g_type_class_unref_uncached">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_class">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_add_interface_check"
+              c:identifier="g_type_add_interface_check">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="check_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="check_func">
+          <type name="GTypeInterfaceCheckFunc"
+                c:type="GTypeInterfaceCheckFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_remove_interface_check"
+              c:identifier="g_type_remove_interface_check">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="check_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="check_func">
+          <type name="GTypeInterfaceCheckFunc"
+                c:type="GTypeInterfaceCheckFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_value_table_peek"
+              c:identifier="g_type_value_table_peek">
+      <return-value>
+        <type name="GTypeValueTable" c:type="GTypeValueTable*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_check_instance" c:identifier="g_type_check_instance">
+      <return-value>
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance">
+          <type name="GTypeInstance" c:type="GTypeInstance*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_check_instance_cast"
+              c:identifier="g_type_check_instance_cast">
+      <return-value>
+        <type name="GTypeInstance" c:type="GTypeInstance*"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance">
+          <type name="GTypeInstance" c:type="GTypeInstance*"/>
+        </parameter>
+        <parameter name="iface_type">
+          <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>
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance">
+          <type name="GTypeInstance" c:type="GTypeInstance*"/>
+        </parameter>
+        <parameter name="iface_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_check_class_cast"
+              c:identifier="g_type_check_class_cast">
+      <return-value>
+        <type name="GTypeClass" c:type="GTypeClass*"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_class">
+          <type name="GTypeClass" c:type="GTypeClass*"/>
+        </parameter>
+        <parameter name="is_a_type">
+          <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>
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_class">
+          <type name="GTypeClass" c:type="GTypeClass*"/>
+        </parameter>
+        <parameter name="is_a_type">
+          <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>
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_check_value" c:identifier="g_type_check_value">
+      <return-value>
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_check_value_holds"
+              c:identifier="g_type_check_value_holds">
+      <return-value>
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_test_flags" c:identifier="g_type_test_flags">
+      <return-value>
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="flags">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_name_from_instance"
+              c:identifier="g_type_name_from_instance">
+      <return-value>
+        <type name="string" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance">
+          <type name="GTypeInstance" c:type="GTypeInstance*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_name_from_class"
+              c:identifier="g_type_name_from_class">
+      <return-value>
+        <type name="string" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_class">
+          <type name="GTypeClass" c:type="GTypeClass*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_c_init" c:identifier="g_value_c_init">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="value_types_init" c:identifier="g_value_types_init">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="enum_types_init" c:identifier="g_enum_types_init">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="param_type_init" c:identifier="g_param_type_init">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="boxed_type_init" c:identifier="g_boxed_type_init">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="object_type_init" c:identifier="g_object_type_init">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="param_spec_types_init"
+              c:identifier="g_param_spec_types_init">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="value_transforms_init"
+              c:identifier="g_value_transforms_init">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="signal_init" c:identifier="g_signal_init">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <callback name="GBoxedCopyFunc">
+      <return-value>
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="boxed">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GBoxedFreeFunc">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="boxed">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <function name="boxed_copy" c:identifier="g_boxed_copy">
+      <return-value>
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="boxed_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="src_boxed">
+          <type name="gconstpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="boxed_free" c:identifier="g_boxed_free">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="boxed_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="boxed">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_boxed" c:identifier="g_value_set_boxed">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="v_boxed">
+          <type name="gconstpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_static_boxed"
+              c:identifier="g_value_set_static_boxed">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="v_boxed">
+          <type name="gconstpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_boxed" c:identifier="g_value_get_boxed">
+      <return-value>
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_dup_boxed" c:identifier="g_value_dup_boxed">
+      <return-value>
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="boxed_type_register_static"
+              c:identifier="g_boxed_type_register_static">
+      <return-value>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="boxed_copy">
+          <type name="GBoxedCopyFunc" c:type="GBoxedCopyFunc"/>
+        </parameter>
+        <parameter name="boxed_free">
+          <type name="GBoxedFreeFunc" c:type="GBoxedFreeFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_take_boxed" c:identifier="g_value_take_boxed">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="v_boxed">
+          <type name="gconstpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_boxed_take_ownership"
+              c:identifier="g_value_set_boxed_take_ownership">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="v_boxed">
+          <type name="gconstpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="closure_get_type" c:identifier="g_closure_get_type">
+      <return-value>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="value_get_type" c:identifier="g_value_get_type">
+      <return-value>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="value_array_get_type"
+              c:identifier="g_value_array_get_type">
+      <return-value>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="date_get_type" c:identifier="g_date_get_type">
+      <return-value>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="strv_get_type" c:identifier="g_strv_get_type">
+      <return-value>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="gstring_get_type" c:identifier="g_gstring_get_type">
+      <return-value>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="hash_table_get_type" c:identifier="g_hash_table_get_type">
+      <return-value>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="regex_get_type" c:identifier="g_regex_get_type">
+      <return-value>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <record name="Closure" c:type="GClosure"/>
+    <record name="ClosureNotifyData" c:type="GClosureNotifyData"/>
+    <callback name="GCallback">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+    </callback>
+    <callback name="GClosureNotify">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GClosureMarshal">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="CClosure" c:type="GCClosure"/>
+    <record name="GClosureNotifyData" c:type="_GClosureNotifyData">
+      <field name="data">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="notify">
+        <type name="GClosureNotify" c:type="GClosureNotify"/>
+      </field>
+    </record>
+    <record name="GClosure" c:type="_GClosure">
+      <field name="ref_count">
+        <type name="uint32" c:type="guint"/>
+      </field>
+      <field name="meta_marshal">
+        <type name="uint32" c:type="guint"/>
+      </field>
+      <field name="n_guards">
+        <type name="uint32" c:type="guint"/>
+      </field>
+      <field name="n_fnotifiers">
+        <type name="uint32" c:type="guint"/>
+      </field>
+      <field name="n_inotifiers">
+        <type name="uint32" c:type="guint"/>
+      </field>
+      <field name="in_inotify">
+        <type name="uint32" c:type="guint"/>
+      </field>
+      <field name="floating">
+        <type name="uint32" c:type="guint"/>
+      </field>
+      <field name="derivative_flag">
+        <type name="uint32" c:type="guint"/>
+      </field>
+      <field name="in_marshal">
+        <type name="uint32" c:type="guint"/>
+      </field>
+      <field name="is_invalid">
+        <type name="uint32" c:type="guint"/>
+      </field>
+      <callback name="marshal">
+        <return-value>
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="closure">
+            <type name="GClosure" c:type="GClosure*"/>
+          </parameter>
+          <parameter name="return_value">
+            <type name="GValue" c:type="GValue*"/>
+          </parameter>
+          <parameter name="n_param_values">
+            <type name="uint32" c:type="guint"/>
+          </parameter>
+          <parameter name="param_values">
+            <type name="GValue" c:type="GValue*"/>
+          </parameter>
+          <parameter name="invocation_hint">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="marshal_data">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </callback>
+      <field name="data">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="notifiers">
+        <type name="GClosureNotifyData" c:type="GClosureNotifyData*"/>
+      </field>
+    </record>
+    <record name="GCClosure" c:type="_GCClosure">
+      <field name="closure">
+        <type name="GClosure" c:type="GClosure"/>
+      </field>
+      <field name="callback">
+        <type name="any" c:type="gpointer"/>
+      </field>
+    </record>
+    <function name="cclosure_new" c:identifier="g_cclosure_new">
+      <return-value>
+        <type name="GClosure" c:type="GClosure*"/>
+      </return-value>
+      <parameters>
+        <parameter name="callback_func">
+          <type name="GCallback" c:type="GCallback"/>
+        </parameter>
+        <parameter name="user_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="destroy_data">
+          <type name="GClosureNotify" c:type="GClosureNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_new_swap" c:identifier="g_cclosure_new_swap">
+      <return-value>
+        <type name="GClosure" c:type="GClosure*"/>
+      </return-value>
+      <parameters>
+        <parameter name="callback_func">
+          <type name="GCallback" c:type="GCallback"/>
+        </parameter>
+        <parameter name="user_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="destroy_data">
+          <type name="GClosureNotify" c:type="GClosureNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_type_cclosure_new"
+              c:identifier="g_signal_type_cclosure_new">
+      <return-value>
+        <type name="GClosure" c:type="GClosure*"/>
+      </return-value>
+      <parameters>
+        <parameter name="itype">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="struct_offset">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="closure_ref" c:identifier="g_closure_ref">
+      <return-value>
+        <type name="GClosure" c:type="GClosure*"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="closure_sink" c:identifier="g_closure_sink">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="closure_unref" c:identifier="g_closure_unref">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="closure_new_simple" c:identifier="g_closure_new_simple">
+      <return-value>
+        <type name="GClosure" c:type="GClosure*"/>
+      </return-value>
+      <parameters>
+        <parameter name="sizeof_closure">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="closure_add_finalize_notifier"
+              c:identifier="g_closure_add_finalize_notifier">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="notify_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify_func">
+          <type name="GClosureNotify" c:type="GClosureNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="closure_remove_finalize_notifier"
+              c:identifier="g_closure_remove_finalize_notifier">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="notify_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify_func">
+          <type name="GClosureNotify" c:type="GClosureNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="closure_add_invalidate_notifier"
+              c:identifier="g_closure_add_invalidate_notifier">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="notify_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify_func">
+          <type name="GClosureNotify" c:type="GClosureNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="closure_remove_invalidate_notifier"
+              c:identifier="g_closure_remove_invalidate_notifier">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="notify_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify_func">
+          <type name="GClosureNotify" c:type="GClosureNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="closure_add_marshal_guards"
+              c:identifier="g_closure_add_marshal_guards">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="pre_marshal_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="pre_marshal_notify">
+          <type name="GClosureNotify" c:type="GClosureNotify"/>
+        </parameter>
+        <parameter name="post_marshal_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="post_marshal_notify">
+          <type name="GClosureNotify" c:type="GClosureNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="closure_set_marshal" c:identifier="g_closure_set_marshal">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="marshal">
+          <type name="GClosureMarshal" c:type="GClosureMarshal"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="closure_set_meta_marshal"
+              c:identifier="g_closure_set_meta_marshal">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="marshal_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="meta_marshal">
+          <type name="GClosureMarshal" c:type="GClosureMarshal"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="closure_invalidate" c:identifier="g_closure_invalidate">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="closure_invoke" c:identifier="g_closure_invoke">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <record name="EnumValue" c:type="GEnumValue"/>
+    <record name="FlagsValue" c:type="GFlagsValue"/>
+    <record name="GEnumValue" c:type="_GEnumValue">
+      <field name="value">
+        <type name="int32" c:type="gint"/>
+      </field>
+      <field name="value_name">
+        <type name="string" c:type="gchar*"/>
+      </field>
+      <field name="value_nick">
+        <type name="string" c:type="gchar*"/>
+      </field>
+    </record>
+    <record name="GFlagsValue" c:type="_GFlagsValue">
+      <field name="value">
+        <type name="uint32" c:type="guint"/>
+      </field>
+      <field name="value_name">
+        <type name="string" c:type="gchar*"/>
+      </field>
+      <field name="value_nick">
+        <type name="string" c:type="gchar*"/>
+      </field>
+    </record>
+    <function name="enum_get_value" c:identifier="g_enum_get_value">
+      <return-value>
+        <type name="GEnumValue" c:type="GEnumValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="enum_class">
+          <type name="GEnumClass" c:type="GEnumClass*"/>
+        </parameter>
+        <parameter name="value">
+          <type name="int32" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="enum_get_value_by_name"
+              c:identifier="g_enum_get_value_by_name">
+      <return-value>
+        <type name="GEnumValue" c:type="GEnumValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="enum_class">
+          <type name="GEnumClass" c:type="GEnumClass*"/>
+        </parameter>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="enum_get_value_by_nick"
+              c:identifier="g_enum_get_value_by_nick">
+      <return-value>
+        <type name="GEnumValue" c:type="GEnumValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="enum_class">
+          <type name="GEnumClass" c:type="GEnumClass*"/>
+        </parameter>
+        <parameter name="nick">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="flags_get_first_value"
+              c:identifier="g_flags_get_first_value">
+      <return-value>
+        <type name="GFlagsValue" c:type="GFlagsValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="flags_class">
+          <type name="GFlagsClass" c:type="GFlagsClass*"/>
+        </parameter>
+        <parameter name="value">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="flags_get_value_by_name"
+              c:identifier="g_flags_get_value_by_name">
+      <return-value>
+        <type name="GFlagsValue" c:type="GFlagsValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="flags_class">
+          <type name="GFlagsClass" c:type="GFlagsClass*"/>
+        </parameter>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="flags_get_value_by_nick"
+              c:identifier="g_flags_get_value_by_nick">
+      <return-value>
+        <type name="GFlagsValue" c:type="GFlagsValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="flags_class">
+          <type name="GFlagsClass" c:type="GFlagsClass*"/>
+        </parameter>
+        <parameter name="nick">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_enum" c:identifier="g_value_set_enum">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="v_enum">
+          <type name="int32" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_enum" c:identifier="g_value_get_enum">
+      <return-value>
+        <type name="int32" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_flags" c:identifier="g_value_set_flags">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="v_flags">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_flags" c:identifier="g_value_get_flags">
+      <return-value>
+        <type name="uint32" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="enum_register_static"
+              c:identifier="g_enum_register_static">
+      <return-value>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="const_static_values">
+          <type name="GEnumValue" c:type="GEnumValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="flags_register_static"
+              c:identifier="g_flags_register_static">
+      <return-value>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="const_static_values">
+          <type name="GFlagsValue" c:type="GFlagsValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="enum_complete_type_info"
+              c:identifier="g_enum_complete_type_info">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_enum_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="info">
+          <type name="GTypeInfo" c:type="GTypeInfo*"/>
+        </parameter>
+        <parameter name="const_values">
+          <type name="GEnumValue" c:type="GEnumValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="flags_complete_type_info"
+              c:identifier="g_flags_complete_type_info">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_flags_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="info">
+          <type name="GTypeInfo" c:type="GTypeInfo*"/>
+        </parameter>
+        <parameter name="const_values">
+          <type name="GFlagsValue" c:type="GFlagsValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_void__void"
+              c:identifier="g_cclosure_marshal_VOID__VOID">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_void__boolean"
+              c:identifier="g_cclosure_marshal_VOID__BOOLEAN">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_void__char"
+              c:identifier="g_cclosure_marshal_VOID__CHAR">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_void__uchar"
+              c:identifier="g_cclosure_marshal_VOID__UCHAR">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_void__int"
+              c:identifier="g_cclosure_marshal_VOID__INT">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_void__uint"
+              c:identifier="g_cclosure_marshal_VOID__UINT">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_void__long"
+              c:identifier="g_cclosure_marshal_VOID__LONG">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_void__ulong"
+              c:identifier="g_cclosure_marshal_VOID__ULONG">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_void__enum"
+              c:identifier="g_cclosure_marshal_VOID__ENUM">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_void__flags"
+              c:identifier="g_cclosure_marshal_VOID__FLAGS">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_void__float"
+              c:identifier="g_cclosure_marshal_VOID__FLOAT">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_void__double"
+              c:identifier="g_cclosure_marshal_VOID__DOUBLE">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_void__string"
+              c:identifier="g_cclosure_marshal_VOID__STRING">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_void__param"
+              c:identifier="g_cclosure_marshal_VOID__PARAM">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_void__boxed"
+              c:identifier="g_cclosure_marshal_VOID__BOXED">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_void__pointer"
+              c:identifier="g_cclosure_marshal_VOID__POINTER">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_void__object"
+              c:identifier="g_cclosure_marshal_VOID__OBJECT">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_void__uint_pointer"
+              c:identifier="g_cclosure_marshal_VOID__UINT_POINTER">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_boolean__flags"
+              c:identifier="g_cclosure_marshal_BOOLEAN__FLAGS">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_marshal_string__object_pointer"
+              c:identifier="g_cclosure_marshal_STRING__OBJECT_POINTER">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="return_value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="n_param_values">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="invocation_hint">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <callback name="GValueTransform">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="src_value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="dest_value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="GValue" c:type="_GValue">
+      <field name="g_type">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="data">
+        <type name="???" c:type="???"/>
+      </field>
+    </record>
+    <function name="value_init" c:identifier="g_value_init">
+      <return-value>
+        <type name="GValue" c:type="GValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="g_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_copy" c:identifier="g_value_copy">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="src_value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="dest_value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_reset" c:identifier="g_value_reset">
+      <return-value>
+        <type name="GValue" c:type="GValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_unset" c:identifier="g_value_unset">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_instance" c:identifier="g_value_set_instance">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="instance">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_fits_pointer" c:identifier="g_value_fits_pointer">
+      <return-value>
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_peek_pointer" c:identifier="g_value_peek_pointer">
+      <return-value>
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_type_compatible"
+              c:identifier="g_value_type_compatible">
+      <return-value>
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="src_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="dest_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_type_transformable"
+              c:identifier="g_value_type_transformable">
+      <return-value>
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="src_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="dest_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_transform" c:identifier="g_value_transform">
+      <return-value>
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="src_value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="dest_value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_register_transform_func"
+              c:identifier="g_value_register_transform_func">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="src_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="dest_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="transform_func">
+          <type name="GValueTransform" c:type="GValueTransform"/>
+        </parameter>
+      </parameters>
+    </function>
+    <enumeration name="gparamflags" 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"/>
+    </enumeration>
+    <record name="ParamSpec" c:type="GParamSpec"/>
+    <record name="Parameter" c:type="GParameter"/>
+    <record name="ParamSpecPool" c:type="GParamSpecPool"/>
+    <record name="GParamSpec" c:type="_GParamSpec">
+      <field name="g_type_instance">
+        <type name="GTypeInstance" c:type="GTypeInstance"/>
+      </field>
+      <field name="name">
+        <type name="string" c:type="gchar*"/>
+      </field>
+      <field name="flags">
+        <type name="GParamFlags" c:type="GParamFlags"/>
+      </field>
+      <field name="value_type">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="owner_type">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="_nick">
+        <type name="string" c:type="gchar*"/>
+      </field>
+      <field name="_blurb">
+        <type name="string" c:type="gchar*"/>
+      </field>
+      <field name="qdata">
+        <type name="GData" c:type="GData*"/>
+      </field>
+      <field name="ref_count">
+        <type name="uint32" c:type="guint"/>
+      </field>
+      <field name="param_id">
+        <type name="uint32" c:type="guint"/>
+      </field>
+      <field name="value_type">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <callback name="finalize">
+        <return-value>
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec">
+            <type name="GParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </callback>
+      <callback name="value_set_default">
+        <return-value>
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec">
+            <type name="GParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+          <parameter name="value">
+            <type name="GValue" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </callback>
+      <callback name="value_validate">
+        <return-value>
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec">
+            <type name="GParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+          <parameter name="value">
+            <type name="GValue" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </callback>
+      <callback name="values_cmp">
+        <return-value>
+          <type name="int32" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec">
+            <type name="GParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+          <parameter name="value1">
+            <type name="GValue" c:type="GValue*"/>
+          </parameter>
+          <parameter name="value2">
+            <type name="GValue" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </callback>
+      <field name="dummy">
+        <type name="any" c:type="gpointer"/>
+      </field>
+    </record>
+    <record name="GParameter" c:type="_GParameter">
+      <field name="name">
+        <type name="string" c:type="gchar*"/>
+      </field>
+      <field name="value">
+        <type name="GValue" c:type="GValue"/>
+      </field>
+    </record>
+    <function name="param_spec_ref" c:identifier="g_param_spec_ref">
+      <return-value>
+        <type name="GParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pspec">
+          <type name="GParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_unref" c:identifier="g_param_spec_unref">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pspec">
+          <type name="GParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_sink" c:identifier="g_param_spec_sink">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pspec">
+          <type name="GParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_ref_sink" c:identifier="g_param_spec_ref_sink">
+      <return-value>
+        <type name="GParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pspec">
+          <type name="GParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_get_qdata"
+              c:identifier="g_param_spec_get_qdata">
+      <return-value>
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="pspec">
+          <type name="GParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+        <parameter name="quark">
+          <type name="GLib.GQuark" c:type="GQuark"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_set_qdata"
+              c:identifier="g_param_spec_set_qdata">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pspec">
+          <type name="GParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+        <parameter name="quark">
+          <type name="GLib.GQuark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_set_qdata_full"
+              c:identifier="g_param_spec_set_qdata_full">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pspec">
+          <type name="GParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+        <parameter name="quark">
+          <type name="GLib.GQuark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="destroy">
+          <type name="GLib.GDestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_steal_qdata"
+              c:identifier="g_param_spec_steal_qdata">
+      <return-value>
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="pspec">
+          <type name="GParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+        <parameter name="quark">
+          <type name="GLib.GQuark" c:type="GQuark"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_get_redirect_target"
+              c:identifier="g_param_spec_get_redirect_target">
+      <return-value>
+        <type name="GParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pspec">
+          <type name="GParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_value_set_default"
+              c:identifier="g_param_value_set_default">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pspec">
+          <type name="GParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_value_defaults"
+              c:identifier="g_param_value_defaults">
+      <return-value>
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pspec">
+          <type name="GParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_value_validate"
+              c:identifier="g_param_value_validate">
+      <return-value>
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pspec">
+          <type name="GParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_value_convert" c:identifier="g_param_value_convert">
+      <return-value>
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pspec">
+          <type name="GParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+        <parameter name="src_value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="dest_value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="strict_validation">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_values_cmp" c:identifier="g_param_values_cmp">
+      <return-value>
+        <type name="int32" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="pspec">
+          <type name="GParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+        <parameter name="value1">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_get_name" c:identifier="g_param_spec_get_name">
+      <return-value>
+        <type name="string" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pspec">
+          <type name="GParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_get_nick" c:identifier="g_param_spec_get_nick">
+      <return-value>
+        <type name="string" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pspec">
+          <type name="GParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_get_blurb"
+              c:identifier="g_param_spec_get_blurb">
+      <return-value>
+        <type name="string" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pspec">
+          <type name="GParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_param" c:identifier="g_value_set_param">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="param">
+          <type name="GParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_param" c:identifier="g_value_get_param">
+      <return-value>
+        <type name="GParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_dup_param" c:identifier="g_value_dup_param">
+      <return-value>
+        <type name="GParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_take_param" c:identifier="g_value_take_param">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="param">
+          <type name="GParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_param_take_ownership"
+              c:identifier="g_value_set_param_take_ownership">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="param">
+          <type name="GParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <record name="ParamSpecTypeInfo" c:type="GParamSpecTypeInfo"/>
+    <record name="GParamSpecTypeInfo" c:type="_GParamSpecTypeInfo">
+      <field name="instance_size">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="n_preallocs">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <callback name="instance_init">
+        <return-value>
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec">
+            <type name="GParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </callback>
+      <field name="value_type">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <callback name="finalize">
+        <return-value>
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec">
+            <type name="GParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </callback>
+      <callback name="value_set_default">
+        <return-value>
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec">
+            <type name="GParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+          <parameter name="value">
+            <type name="GValue" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </callback>
+      <callback name="value_validate">
+        <return-value>
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec">
+            <type name="GParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+          <parameter name="value">
+            <type name="GValue" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </callback>
+      <callback name="values_cmp">
+        <return-value>
+          <type name="int32" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec">
+            <type name="GParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+          <parameter name="value1">
+            <type name="GValue" c:type="GValue*"/>
+          </parameter>
+          <parameter name="value2">
+            <type name="GValue" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </callback>
+    </record>
+    <function name="param_type_register_static"
+              c:identifier="g_param_type_register_static">
+      <return-value>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="pspec_info">
+          <type name="GParamSpecTypeInfo" c:type="GParamSpecTypeInfo*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="g_param_type_register_static_constant"
+              c:identifier="_g_param_type_register_static_constant">
+      <return-value>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="pspec_info">
+          <type name="GParamSpecTypeInfo" c:type="GParamSpecTypeInfo*"/>
+        </parameter>
+        <parameter name="opt_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_internal" c:identifier="g_param_spec_internal">
+      <return-value>
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="param_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="flags">
+          <type name="GParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_pool_new" c:identifier="g_param_spec_pool_new">
+      <return-value>
+        <type name="GParamSpecPool" c:type="GParamSpecPool*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type_prefixing">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_pool_insert"
+              c:identifier="g_param_spec_pool_insert">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pool">
+          <type name="GParamSpecPool" c:type="GParamSpecPool*"/>
+        </parameter>
+        <parameter name="pspec">
+          <type name="GParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+        <parameter name="owner_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_pool_remove"
+              c:identifier="g_param_spec_pool_remove">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pool">
+          <type name="GParamSpecPool" c:type="GParamSpecPool*"/>
+        </parameter>
+        <parameter name="pspec">
+          <type name="GParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_pool_lookup"
+              c:identifier="g_param_spec_pool_lookup">
+      <return-value>
+        <type name="GParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pool">
+          <type name="GParamSpecPool" c:type="GParamSpecPool*"/>
+        </parameter>
+        <parameter name="param_name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="owner_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="walk_ancestors">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_pool_list_owned"
+              c:identifier="g_param_spec_pool_list_owned">
+      <return-value>
+        <type name="GLib.GList" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pool">
+          <type name="GParamSpecPool" c:type="GParamSpecPool*"/>
+        </parameter>
+        <parameter name="owner_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_pool_list"
+              c:identifier="g_param_spec_pool_list">
+      <return-value>
+        <type name="GParamSpec" c:type="GParamSpec**"/>
+      </return-value>
+      <parameters>
+        <parameter name="pool">
+          <type name="GParamSpecPool" c:type="GParamSpecPool*"/>
+        </parameter>
+        <parameter name="owner_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="n_pspecs_p">
+          <type name="GLib.guint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <record name="SignalQuery" c:type="GSignalQuery"/>
+    <record name="SignalInvocationHint" c:type="GSignalInvocationHint"/>
+    <callback name="GSignalEmissionHook">
+      <return-value>
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="ihint">
+          <type name="GSignalInvocationHint" c:type="GSignalInvocationHint*"/>
+        </parameter>
+        <parameter name="n_param_values">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GSignalAccumulator">
+      <return-value>
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="ihint">
+          <type name="GSignalInvocationHint" c:type="GSignalInvocationHint*"/>
+        </parameter>
+        <parameter name="return_accu">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="handler_return">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="gsignalflags" 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"/>
+    </enumeration>
+    <enumeration name="gconnectflags" c:type="GConnectFlags">
+      <member name="after" value="1" c:identifier="G_CONNECT_AFTER"/>
+      <member name="swapped" value="2" c:identifier="G_CONNECT_SWAPPED"/>
+    </enumeration>
+    <enumeration name="gsignalmatchtype" 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"/>
+    </enumeration>
+    <record name="GSignalInvocationHint" c:type="_GSignalInvocationHint">
+      <field name="signal_id">
+        <type name="uint32" c:type="guint"/>
+      </field>
+      <field name="detail">
+        <type name="GLib.GQuark" c:type="GQuark"/>
+      </field>
+      <field name="run_type">
+        <type name="GSignalFlags" c:type="GSignalFlags"/>
+      </field>
+    </record>
+    <record name="GSignalQuery" c:type="_GSignalQuery">
+      <field name="signal_id">
+        <type name="uint32" c:type="guint"/>
+      </field>
+      <field name="signal_name">
+        <type name="string" c:type="gchar*"/>
+      </field>
+      <field name="itype">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="signal_flags">
+        <type name="GSignalFlags" c:type="GSignalFlags"/>
+      </field>
+      <field name="return_type">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="n_params">
+        <type name="uint32" c:type="guint"/>
+      </field>
+      <field name="param_types">
+        <type name="GType" c:type="GType*"/>
+      </field>
+    </record>
+    <function name="signal_newv" c:identifier="g_signal_newv">
+      <return-value>
+        <type name="uint32" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="signal_name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="itype">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="signal_flags">
+          <type name="GSignalFlags" c:type="GSignalFlags"/>
+        </parameter>
+        <parameter name="class_closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="accumulator">
+          <type name="GSignalAccumulator" c:type="GSignalAccumulator"/>
+        </parameter>
+        <parameter name="accu_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="c_marshaller">
+          <type name="GSignalCMarshaller" c:type="GSignalCMarshaller"/>
+        </parameter>
+        <parameter name="return_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="n_params">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="param_types">
+          <type name="GType" c:type="GType*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_new_valist" c:identifier="g_signal_new_valist">
+      <return-value>
+        <type name="uint32" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="signal_name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="itype">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="signal_flags">
+          <type name="GSignalFlags" c:type="GSignalFlags"/>
+        </parameter>
+        <parameter name="class_closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="accumulator">
+          <type name="GSignalAccumulator" c:type="GSignalAccumulator"/>
+        </parameter>
+        <parameter name="accu_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="c_marshaller">
+          <type name="GSignalCMarshaller" c:type="GSignalCMarshaller"/>
+        </parameter>
+        <parameter name="return_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="n_params">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="args">
+          <type name="va_list" c:type="va_list"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_new" c:identifier="g_signal_new">
+      <return-value>
+        <type name="uint32" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="signal_name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="itype">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="signal_flags">
+          <type name="GSignalFlags" c:type="GSignalFlags"/>
+        </parameter>
+        <parameter name="class_offset">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="accumulator">
+          <type name="GSignalAccumulator" c:type="GSignalAccumulator"/>
+        </parameter>
+        <parameter name="accu_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="c_marshaller">
+          <type name="GSignalCMarshaller" c:type="GSignalCMarshaller"/>
+        </parameter>
+        <parameter name="return_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="n_params">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_emitv" c:identifier="g_signal_emitv">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance_and_params">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="signal_id">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="detail">
+          <type name="GLib.GQuark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="return_value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_emit_valist" c:identifier="g_signal_emit_valist">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="signal_id">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="detail">
+          <type name="GLib.GQuark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="var_args">
+          <type name="va_list" c:type="va_list"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_emit" c:identifier="g_signal_emit">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="signal_id">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="detail">
+          <type name="GLib.GQuark" c:type="GQuark"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_emit_by_name" c:identifier="g_signal_emit_by_name">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="detailed_signal">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_lookup" c:identifier="g_signal_lookup">
+      <return-value>
+        <type name="uint32" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="itype">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_name" c:identifier="g_signal_name">
+      <return-value>
+        <type name="string" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="signal_id">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_query" c:identifier="g_signal_query">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="signal_id">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="query">
+          <type name="GSignalQuery" c:type="GSignalQuery*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_list_ids" c:identifier="g_signal_list_ids">
+      <return-value>
+        <type name="GLib.guint" c:type="guint*"/>
+      </return-value>
+      <parameters>
+        <parameter name="itype">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="n_ids">
+          <type name="GLib.guint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_parse_name" c:identifier="g_signal_parse_name">
+      <return-value>
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="detailed_signal">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="itype">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="signal_id_p">
+          <type name="GLib.guint" c:type="guint*"/>
+        </parameter>
+        <parameter name="detail_p">
+          <type name="GLib.GQuark" c:type="GQuark*"/>
+        </parameter>
+        <parameter name="force_detail_quark">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_get_invocation_hint"
+              c:identifier="g_signal_get_invocation_hint">
+      <return-value>
+        <type name="GSignalInvocationHint" c:type="GSignalInvocationHint*"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_stop_emission"
+              c:identifier="g_signal_stop_emission">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="signal_id">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="detail">
+          <type name="GLib.GQuark" c:type="GQuark"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_stop_emission_by_name"
+              c:identifier="g_signal_stop_emission_by_name">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="detailed_signal">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_add_emission_hook"
+              c:identifier="g_signal_add_emission_hook">
+      <return-value>
+        <type name="ulong" c:type="gulong"/>
+      </return-value>
+      <parameters>
+        <parameter name="signal_id">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="detail">
+          <type name="GLib.GQuark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="hook_func">
+          <type name="GSignalEmissionHook" c:type="GSignalEmissionHook"/>
+        </parameter>
+        <parameter name="hook_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="data_destroy">
+          <type name="GLib.GDestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_remove_emission_hook"
+              c:identifier="g_signal_remove_emission_hook">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="signal_id">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="hook_id">
+          <type name="ulong" c:type="gulong"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_has_handler_pending"
+              c:identifier="g_signal_has_handler_pending">
+      <return-value>
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="signal_id">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="detail">
+          <type name="GLib.GQuark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="may_be_blocked">
+          <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>
+        <type name="ulong" c:type="gulong"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="signal_id">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="detail">
+          <type name="GLib.GQuark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="after">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_connect_closure"
+              c:identifier="g_signal_connect_closure">
+      <return-value>
+        <type name="ulong" c:type="gulong"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="detailed_signal">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="after">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_connect_data" c:identifier="g_signal_connect_data">
+      <return-value>
+        <type name="ulong" c:type="gulong"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="detailed_signal">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="c_handler">
+          <type name="GCallback" c:type="GCallback"/>
+        </parameter>
+        <parameter name="data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="destroy_data">
+          <type name="GClosureNotify" c:type="GClosureNotify"/>
+        </parameter>
+        <parameter name="connect_flags">
+          <type name="GConnectFlags" c:type="GConnectFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_handler_block"
+              c:identifier="g_signal_handler_block">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="handler_id">
+          <type name="ulong" c:type="gulong"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_handler_unblock"
+              c:identifier="g_signal_handler_unblock">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="handler_id">
+          <type name="ulong" c:type="gulong"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_handler_disconnect"
+              c:identifier="g_signal_handler_disconnect">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="handler_id">
+          <type name="ulong" c:type="gulong"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_handler_is_connected"
+              c:identifier="g_signal_handler_is_connected">
+      <return-value>
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="handler_id">
+          <type name="ulong" c:type="gulong"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_handler_find" c:identifier="g_signal_handler_find">
+      <return-value>
+        <type name="ulong" c:type="gulong"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="mask">
+          <type name="GSignalMatchType" c:type="GSignalMatchType"/>
+        </parameter>
+        <parameter name="signal_id">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="detail">
+          <type name="GLib.GQuark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="func">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_handlers_block_matched"
+              c:identifier="g_signal_handlers_block_matched">
+      <return-value>
+        <type name="uint32" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="mask">
+          <type name="GSignalMatchType" c:type="GSignalMatchType"/>
+        </parameter>
+        <parameter name="signal_id">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="detail">
+          <type name="GLib.GQuark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="func">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_handlers_unblock_matched"
+              c:identifier="g_signal_handlers_unblock_matched">
+      <return-value>
+        <type name="uint32" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="mask">
+          <type name="GSignalMatchType" c:type="GSignalMatchType"/>
+        </parameter>
+        <parameter name="signal_id">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="detail">
+          <type name="GLib.GQuark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="func">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_handlers_disconnect_matched"
+              c:identifier="g_signal_handlers_disconnect_matched">
+      <return-value>
+        <type name="uint32" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="mask">
+          <type name="GSignalMatchType" c:type="GSignalMatchType"/>
+        </parameter>
+        <parameter name="signal_id">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="detail">
+          <type name="GLib.GQuark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="func">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_override_class_closure"
+              c:identifier="g_signal_override_class_closure">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="signal_id">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="instance_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="class_closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_chain_from_overridden"
+              c:identifier="g_signal_chain_from_overridden">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance_and_params">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="return_value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_accumulator_true_handled"
+              c:identifier="g_signal_accumulator_true_handled">
+      <return-value>
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="ihint">
+          <type name="GSignalInvocationHint" c:type="GSignalInvocationHint*"/>
+        </parameter>
+        <parameter name="return_accu">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="handler_return">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="dummy">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_handlers_destroy"
+              c:identifier="g_signal_handlers_destroy">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="g_signals_destroy" c:identifier="_g_signals_destroy">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="itype">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <class name="Object"
+           c:type="GObject"
+           glib:type-name="GObject"
+           glib:get-type="intern">
+      <field name="construct_properties">
+        <type name="GLib.GSList" c:type="GSList*"/>
+      </field>
+      <callback name="constructor">
+        <return-value>
+          <type name="Object" c:type="GObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="n_construct_properties">
+            <type name="uint32" c:type="guint"/>
+          </parameter>
+          <parameter name="construct_properties">
+            <type name="GObjectConstructParam"
+                  c:type="GObjectConstructParam*"/>
+          </parameter>
+        </parameters>
+      </callback>
+      <callback name="set_property">
+        <return-value>
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object">
+            <type name="Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_id">
+            <type name="uint32" c:type="guint"/>
+          </parameter>
+          <parameter name="value">
+            <type name="GValue" c:type="GValue*"/>
+          </parameter>
+          <parameter name="pspec">
+            <type name="GParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </callback>
+      <callback name="get_property">
+        <return-value>
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object">
+            <type name="Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_id">
+            <type name="uint32" c:type="guint"/>
+          </parameter>
+          <parameter name="value">
+            <type name="GValue" c:type="GValue*"/>
+          </parameter>
+          <parameter name="pspec">
+            <type name="GParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </callback>
+      <callback name="dispose">
+        <return-value>
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object">
+            <type name="Object" c:type="GObject*"/>
+          </parameter>
+        </parameters>
+      </callback>
+      <callback name="finalize">
+        <return-value>
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object">
+            <type name="Object" c:type="GObject*"/>
+          </parameter>
+        </parameters>
+      </callback>
+      <callback name="dispatch_properties_changed">
+        <return-value>
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object">
+            <type name="Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="n_pspecs">
+            <type name="uint32" c:type="guint"/>
+          </parameter>
+          <parameter name="pspecs">
+            <type name="GParamSpec" c:type="GParamSpec**"/>
+          </parameter>
+        </parameters>
+      </callback>
+      <callback name="notify">
+        <return-value>
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object">
+            <type name="Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="pspec">
+            <type name="GParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </callback>
+      <callback name="constructed">
+        <return-value>
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object">
+            <type name="Object" c:type="GObject*"/>
+          </parameter>
+        </parameters>
+      </callback>
+      <field name="pdummy">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <glib:signal name="notify">
+        <return-value>
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object">
+            <type name="GParam" c:type="GParam"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <class name="InitiallyUnowned"
+           c:type="GInitiallyUnowned"
+           parent="GObject"
+           glib:type-name="GInitiallyUnowned"
+           glib:get-type="g_initially_unowned_get_type">
+      <glib:signal name="notify">
+        <return-value>
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object">
+            <type name="GParam" c:type="GParam"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="ObjectConstructParam" c:type="GObjectConstructParam"/>
+    <callback name="GObjectGetPropertyFunc">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object">
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="property_id">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="pspec">
+          <type name="GParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GObjectSetPropertyFunc">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object">
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="property_id">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="pspec">
+          <type name="GParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GObjectFinalizeFunc">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object">
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GWeakNotify">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="where_the_object_was">
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="GObjectConstructParam" c:type="_GObjectConstructParam">
+      <field name="pspec">
+        <type name="GParamSpec" c:type="GParamSpec*"/>
+      </field>
+      <field name="value">
+        <type name="GValue" c:type="GValue*"/>
+      </field>
+    </record>
+    <function name="initially_unowned_get_type"
+              c:identifier="g_initially_unowned_get_type">
+      <return-value>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="object_class_install_property"
+              c:identifier="g_object_class_install_property">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="oclass">
+          <type name="GObjectClass" c:type="GObjectClass*"/>
+        </parameter>
+        <parameter name="property_id">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="pspec">
+          <type name="GParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_class_find_property"
+              c:identifier="g_object_class_find_property">
+      <return-value>
+        <type name="GParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="oclass">
+          <type name="GObjectClass" c:type="GObjectClass*"/>
+        </parameter>
+        <parameter name="property_name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_class_list_properties"
+              c:identifier="g_object_class_list_properties">
+      <return-value>
+        <type name="GParamSpec" c:type="GParamSpec**"/>
+      </return-value>
+      <parameters>
+        <parameter name="oclass">
+          <type name="GObjectClass" c:type="GObjectClass*"/>
+        </parameter>
+        <parameter name="n_properties">
+          <type name="GLib.guint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_class_override_property"
+              c:identifier="g_object_class_override_property">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="oclass">
+          <type name="GObjectClass" c:type="GObjectClass*"/>
+        </parameter>
+        <parameter name="property_id">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_interface_install_property"
+              c:identifier="g_object_interface_install_property">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_iface">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="pspec">
+          <type name="GParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_interface_find_property"
+              c:identifier="g_object_interface_find_property">
+      <return-value>
+        <type name="GParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_iface">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="property_name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_interface_list_properties"
+              c:identifier="g_object_interface_list_properties">
+      <return-value>
+        <type name="GParamSpec" c:type="GParamSpec**"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_iface">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="n_properties_p">
+          <type name="GLib.guint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_new" c:identifier="g_object_new">
+      <return-value>
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="object_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="first_property_name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_newv" c:identifier="g_object_newv">
+      <return-value>
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="object_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="n_parameters">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="parameters">
+          <type name="GParameter" c:type="GParameter*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_new_valist" c:identifier="g_object_new_valist">
+      <return-value>
+        <type name="Object" c:type="GObject*"/>
+      </return-value>
+      <parameters>
+        <parameter name="object_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="first_property_name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="var_args">
+          <type name="va_list" c:type="va_list"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_set" c:identifier="g_object_set">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="first_property_name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_get" c:identifier="g_object_get">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="first_property_name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_connect" c:identifier="g_object_connect">
+      <return-value>
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="object">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="signal_spec">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_disconnect" c:identifier="g_object_disconnect">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="signal_spec">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_set_valist" c:identifier="g_object_set_valist">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object">
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="first_property_name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="var_args">
+          <type name="va_list" c:type="va_list"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_get_valist" c:identifier="g_object_get_valist">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object">
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="first_property_name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="var_args">
+          <type name="va_list" c:type="va_list"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_set_property" c:identifier="g_object_set_property">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object">
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="property_name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_get_property" c:identifier="g_object_get_property">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object">
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="property_name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_freeze_notify"
+              c:identifier="g_object_freeze_notify">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object">
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_notify" c:identifier="g_object_notify">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object">
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="property_name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_thaw_notify" c:identifier="g_object_thaw_notify">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object">
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_is_floating" c:identifier="g_object_is_floating">
+      <return-value>
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="object">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_ref_sink" c:identifier="g_object_ref_sink">
+      <return-value>
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="object">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_ref" c:identifier="g_object_ref">
+      <return-value>
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="object">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_unref" c:identifier="g_object_unref">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_weak_ref" c:identifier="g_object_weak_ref">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object">
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="notify">
+          <type name="GWeakNotify" c:type="GWeakNotify"/>
+        </parameter>
+        <parameter name="data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_weak_unref" c:identifier="g_object_weak_unref">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object">
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="notify">
+          <type name="GWeakNotify" c:type="GWeakNotify"/>
+        </parameter>
+        <parameter name="data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_add_weak_pointer"
+              c:identifier="g_object_add_weak_pointer">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object">
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="weak_pointer_location">
+          <type name="gpointer" c:type="gpointer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_remove_weak_pointer"
+              c:identifier="g_object_remove_weak_pointer">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object">
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="weak_pointer_location">
+          <type name="gpointer" c:type="gpointer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <callback name="GToggleNotify">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="object">
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="is_last_ref">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <function name="object_add_toggle_ref"
+              c:identifier="g_object_add_toggle_ref">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object">
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="notify">
+          <type name="GToggleNotify" c:type="GToggleNotify"/>
+        </parameter>
+        <parameter name="data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_remove_toggle_ref"
+              c:identifier="g_object_remove_toggle_ref">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object">
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="notify">
+          <type name="GToggleNotify" c:type="GToggleNotify"/>
+        </parameter>
+        <parameter name="data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_get_qdata" c:identifier="g_object_get_qdata">
+      <return-value>
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="object">
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="quark">
+          <type name="GLib.GQuark" c:type="GQuark"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_set_qdata" c:identifier="g_object_set_qdata">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object">
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="quark">
+          <type name="GLib.GQuark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_set_qdata_full"
+              c:identifier="g_object_set_qdata_full">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object">
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="quark">
+          <type name="GLib.GQuark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="destroy">
+          <type name="GLib.GDestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_steal_qdata" c:identifier="g_object_steal_qdata">
+      <return-value>
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="object">
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="quark">
+          <type name="GLib.GQuark" c:type="GQuark"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_get_data" c:identifier="g_object_get_data">
+      <return-value>
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="object">
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="key">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_set_data" c:identifier="g_object_set_data">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object">
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="key">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_set_data_full"
+              c:identifier="g_object_set_data_full">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object">
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="key">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="destroy">
+          <type name="GLib.GDestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_steal_data" c:identifier="g_object_steal_data">
+      <return-value>
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="object">
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="key">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_watch_closure"
+              c:identifier="g_object_watch_closure">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object">
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_new_object" c:identifier="g_cclosure_new_object">
+      <return-value>
+        <type name="GClosure" c:type="GClosure*"/>
+      </return-value>
+      <parameters>
+        <parameter name="callback_func">
+          <type name="GCallback" c:type="GCallback"/>
+        </parameter>
+        <parameter name="object">
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_new_object_swap"
+              c:identifier="g_cclosure_new_object_swap">
+      <return-value>
+        <type name="GClosure" c:type="GClosure*"/>
+      </return-value>
+      <parameters>
+        <parameter name="callback_func">
+          <type name="GCallback" c:type="GCallback"/>
+        </parameter>
+        <parameter name="object">
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="closure_new_object" c:identifier="g_closure_new_object">
+      <return-value>
+        <type name="GClosure" c:type="GClosure*"/>
+      </return-value>
+      <parameters>
+        <parameter name="sizeof_closure">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="object">
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_object" c:identifier="g_value_set_object">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="v_object">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_object" c:identifier="g_value_get_object">
+      <return-value>
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_dup_object" c:identifier="g_value_dup_object">
+      <return-value>
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_connect_object"
+              c:identifier="g_signal_connect_object">
+      <return-value>
+        <type name="ulong" c:type="gulong"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="detailed_signal">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="c_handler">
+          <type name="GCallback" c:type="GCallback"/>
+        </parameter>
+        <parameter name="gobject">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="connect_flags">
+          <type name="GConnectFlags" c:type="GConnectFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_force_floating"
+              c:identifier="g_object_force_floating">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object">
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_run_dispose" c:identifier="g_object_run_dispose">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object">
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_take_object" c:identifier="g_value_take_object">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="v_object">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_object_take_ownership"
+              c:identifier="g_value_set_object_take_ownership">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="v_object">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_compat_control"
+              c:identifier="g_object_compat_control">
+      <return-value>
+        <type name="size" c:type="gsize"/>
+      </return-value>
+      <parameters>
+        <parameter name="what">
+          <type name="size" c:type="gsize"/>
+        </parameter>
+        <parameter name="data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <record name="ParamSpecChar" c:type="GParamSpecChar"/>
+    <record name="ParamSpecUChar" c:type="GParamSpecUChar"/>
+    <record name="ParamSpecBoolean" c:type="GParamSpecBoolean"/>
+    <record name="ParamSpecInt" c:type="GParamSpecInt"/>
+    <record name="ParamSpecUInt" c:type="GParamSpecUInt"/>
+    <record name="ParamSpecLong" c:type="GParamSpecLong"/>
+    <record name="ParamSpecULong" c:type="GParamSpecULong"/>
+    <record name="ParamSpecInt64" c:type="GParamSpecInt64"/>
+    <record name="ParamSpecUInt64" c:type="GParamSpecUInt64"/>
+    <record name="ParamSpecUnichar" c:type="GParamSpecUnichar"/>
+    <record name="ParamSpecEnum" c:type="GParamSpecEnum"/>
+    <record name="ParamSpecFlags" c:type="GParamSpecFlags"/>
+    <record name="ParamSpecFloat" c:type="GParamSpecFloat"/>
+    <record name="ParamSpecDouble" c:type="GParamSpecDouble"/>
+    <record name="ParamSpecString" c:type="GParamSpecString"/>
+    <record name="ParamSpecParam" c:type="GParamSpecParam"/>
+    <record name="ParamSpecBoxed" c:type="GParamSpecBoxed"/>
+    <record name="ParamSpecPointer" c:type="GParamSpecPointer"/>
+    <record name="ParamSpecValueArray" c:type="GParamSpecValueArray"/>
+    <record name="ParamSpecObject" c:type="GParamSpecObject"/>
+    <record name="ParamSpecOverride" c:type="GParamSpecOverride"/>
+    <record name="ParamSpecGType" c:type="GParamSpecGType"/>
+    <record name="GParamSpecChar" c:type="_GParamSpecChar">
+      <field name="parent_instance">
+        <type name="GParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="minimum">
+        <type name="int8" c:type="gint8"/>
+      </field>
+      <field name="maximum">
+        <type name="int8" c:type="gint8"/>
+      </field>
+      <field name="default_value">
+        <type name="int8" c:type="gint8"/>
+      </field>
+    </record>
+    <record name="GParamSpecUChar" c:type="_GParamSpecUChar">
+      <field name="parent_instance">
+        <type name="GParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="minimum">
+        <type name="uint8" c:type="guint8"/>
+      </field>
+      <field name="maximum">
+        <type name="uint8" c:type="guint8"/>
+      </field>
+      <field name="default_value">
+        <type name="uint8" c:type="guint8"/>
+      </field>
+    </record>
+    <record name="GParamSpecBoolean" c:type="_GParamSpecBoolean">
+      <field name="parent_instance">
+        <type name="GParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="default_value">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+    </record>
+    <record name="GParamSpecInt" c:type="_GParamSpecInt">
+      <field name="parent_instance">
+        <type name="GParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="minimum">
+        <type name="int32" c:type="gint"/>
+      </field>
+      <field name="maximum">
+        <type name="int32" c:type="gint"/>
+      </field>
+      <field name="default_value">
+        <type name="int32" c:type="gint"/>
+      </field>
+    </record>
+    <record name="GParamSpecUInt" c:type="_GParamSpecUInt">
+      <field name="parent_instance">
+        <type name="GParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="minimum">
+        <type name="uint32" c:type="guint"/>
+      </field>
+      <field name="maximum">
+        <type name="uint32" c:type="guint"/>
+      </field>
+      <field name="default_value">
+        <type name="uint32" c:type="guint"/>
+      </field>
+    </record>
+    <record name="GParamSpecLong" c:type="_GParamSpecLong">
+      <field name="parent_instance">
+        <type name="GParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="minimum">
+        <type name="long" c:type="glong"/>
+      </field>
+      <field name="maximum">
+        <type name="long" c:type="glong"/>
+      </field>
+      <field name="default_value">
+        <type name="long" c:type="glong"/>
+      </field>
+    </record>
+    <record name="GParamSpecULong" c:type="_GParamSpecULong">
+      <field name="parent_instance">
+        <type name="GParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="minimum">
+        <type name="ulong" c:type="gulong"/>
+      </field>
+      <field name="maximum">
+        <type name="ulong" c:type="gulong"/>
+      </field>
+      <field name="default_value">
+        <type name="ulong" c:type="gulong"/>
+      </field>
+    </record>
+    <record name="GParamSpecInt64" c:type="_GParamSpecInt64">
+      <field name="parent_instance">
+        <type name="GParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="minimum">
+        <type name="gint64" c:type="gint64"/>
+      </field>
+      <field name="maximum">
+        <type name="gint64" c:type="gint64"/>
+      </field>
+      <field name="default_value">
+        <type name="gint64" c:type="gint64"/>
+      </field>
+    </record>
+    <record name="GParamSpecUInt64" c:type="_GParamSpecUInt64">
+      <field name="parent_instance">
+        <type name="GParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="minimum">
+        <type name="guint64" c:type="guint64"/>
+      </field>
+      <field name="maximum">
+        <type name="guint64" c:type="guint64"/>
+      </field>
+      <field name="default_value">
+        <type name="guint64" c:type="guint64"/>
+      </field>
+    </record>
+    <record name="GParamSpecUnichar" c:type="_GParamSpecUnichar">
+      <field name="parent_instance">
+        <type name="GParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="default_value">
+        <type name="GLib.gunichar" c:type="gunichar"/>
+      </field>
+    </record>
+    <record name="GParamSpecEnum" c:type="_GParamSpecEnum">
+      <field name="parent_instance">
+        <type name="GParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="enum_class">
+        <type name="GEnumClass" c:type="GEnumClass*"/>
+      </field>
+      <field name="default_value">
+        <type name="int32" c:type="gint"/>
+      </field>
+    </record>
+    <record name="GParamSpecFlags" c:type="_GParamSpecFlags">
+      <field name="parent_instance">
+        <type name="GParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="flags_class">
+        <type name="GFlagsClass" c:type="GFlagsClass*"/>
+      </field>
+      <field name="default_value">
+        <type name="uint32" c:type="guint"/>
+      </field>
+    </record>
+    <record name="GParamSpecFloat" c:type="_GParamSpecFloat">
+      <field name="parent_instance">
+        <type name="GParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="minimum">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="maximum">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="default_value">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="epsilon">
+        <type name="float" c:type="gfloat"/>
+      </field>
+    </record>
+    <record name="GParamSpecDouble" c:type="_GParamSpecDouble">
+      <field name="parent_instance">
+        <type name="GParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="minimum">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="maximum">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="default_value">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="epsilon">
+        <type name="double" c:type="gdouble"/>
+      </field>
+    </record>
+    <record name="GParamSpecString" c:type="_GParamSpecString">
+      <field name="parent_instance">
+        <type name="GParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="default_value">
+        <type name="string" c:type="gchar*"/>
+      </field>
+      <field name="cset_first">
+        <type name="string" c:type="gchar*"/>
+      </field>
+      <field name="cset_nth">
+        <type name="string" c:type="gchar*"/>
+      </field>
+      <field name="substitutor">
+        <type name="GLib.gchar" c:type="gchar"/>
+      </field>
+      <field name="null_fold_if_empty">
+        <type name="uint32" c:type="guint"/>
+      </field>
+      <field name="ensure_non_null">
+        <type name="uint32" c:type="guint"/>
+      </field>
+    </record>
+    <record name="GParamSpecParam" c:type="_GParamSpecParam">
+      <field name="parent_instance">
+        <type name="GParamSpec" c:type="GParamSpec"/>
+      </field>
+    </record>
+    <record name="GParamSpecBoxed" c:type="_GParamSpecBoxed">
+      <field name="parent_instance">
+        <type name="GParamSpec" c:type="GParamSpec"/>
+      </field>
+    </record>
+    <record name="GParamSpecPointer" c:type="_GParamSpecPointer">
+      <field name="parent_instance">
+        <type name="GParamSpec" c:type="GParamSpec"/>
+      </field>
+    </record>
+    <record name="GParamSpecValueArray" c:type="_GParamSpecValueArray">
+      <field name="parent_instance">
+        <type name="GParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="element_spec">
+        <type name="GParamSpec" c:type="GParamSpec*"/>
+      </field>
+      <field name="fixed_n_elements">
+        <type name="uint32" c:type="guint"/>
+      </field>
+    </record>
+    <record name="GParamSpecObject" c:type="_GParamSpecObject">
+      <field name="parent_instance">
+        <type name="GParamSpec" c:type="GParamSpec"/>
+      </field>
+    </record>
+    <record name="GParamSpecOverride" c:type="_GParamSpecOverride">
+      <field name="parent_instance">
+        <type name="GParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="overridden">
+        <type name="GParamSpec" c:type="GParamSpec*"/>
+      </field>
+    </record>
+    <record name="GParamSpecGType" c:type="_GParamSpecGType">
+      <field name="parent_instance">
+        <type name="GParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="is_a_type">
+        <type name="GType" c:type="GType"/>
+      </field>
+    </record>
+    <function name="param_spec_char" c:identifier="g_param_spec_char">
+      <return-value>
+        <type name="GParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="minimum">
+          <type name="int8" c:type="gint8"/>
+        </parameter>
+        <parameter name="maximum">
+          <type name="int8" c:type="gint8"/>
+        </parameter>
+        <parameter name="default_value">
+          <type name="int8" c:type="gint8"/>
+        </parameter>
+        <parameter name="flags">
+          <type name="GParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_uchar" c:identifier="g_param_spec_uchar">
+      <return-value>
+        <type name="GParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="minimum">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="maximum">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="default_value">
+          <type name="uint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="flags">
+          <type name="GParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_boolean" c:identifier="g_param_spec_boolean">
+      <return-value>
+        <type name="GParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="default_value">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="flags">
+          <type name="GParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_int" c:identifier="g_param_spec_int">
+      <return-value>
+        <type name="GParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="minimum">
+          <type name="int32" c:type="gint"/>
+        </parameter>
+        <parameter name="maximum">
+          <type name="int32" c:type="gint"/>
+        </parameter>
+        <parameter name="default_value">
+          <type name="int32" c:type="gint"/>
+        </parameter>
+        <parameter name="flags">
+          <type name="GParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_uint" c:identifier="g_param_spec_uint">
+      <return-value>
+        <type name="GParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="minimum">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="maximum">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="default_value">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="flags">
+          <type name="GParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_long" c:identifier="g_param_spec_long">
+      <return-value>
+        <type name="GParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="minimum">
+          <type name="long" c:type="glong"/>
+        </parameter>
+        <parameter name="maximum">
+          <type name="long" c:type="glong"/>
+        </parameter>
+        <parameter name="default_value">
+          <type name="long" c:type="glong"/>
+        </parameter>
+        <parameter name="flags">
+          <type name="GParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_ulong" c:identifier="g_param_spec_ulong">
+      <return-value>
+        <type name="GParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="minimum">
+          <type name="ulong" c:type="gulong"/>
+        </parameter>
+        <parameter name="maximum">
+          <type name="ulong" c:type="gulong"/>
+        </parameter>
+        <parameter name="default_value">
+          <type name="ulong" c:type="gulong"/>
+        </parameter>
+        <parameter name="flags">
+          <type name="GParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_int64" c:identifier="g_param_spec_int64">
+      <return-value>
+        <type name="GParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="minimum">
+          <type name="gint64" c:type="gint64"/>
+        </parameter>
+        <parameter name="maximum">
+          <type name="gint64" c:type="gint64"/>
+        </parameter>
+        <parameter name="default_value">
+          <type name="gint64" c:type="gint64"/>
+        </parameter>
+        <parameter name="flags">
+          <type name="GParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_uint64" c:identifier="g_param_spec_uint64">
+      <return-value>
+        <type name="GParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="minimum">
+          <type name="guint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="maximum">
+          <type name="guint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="default_value">
+          <type name="guint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="flags">
+          <type name="GParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_unichar" c:identifier="g_param_spec_unichar">
+      <return-value>
+        <type name="GParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="default_value">
+          <type name="GLib.gunichar" c:type="gunichar"/>
+        </parameter>
+        <parameter name="flags">
+          <type name="GParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_enum" c:identifier="g_param_spec_enum">
+      <return-value>
+        <type name="GParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="enum_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="default_value">
+          <type name="int32" c:type="gint"/>
+        </parameter>
+        <parameter name="flags">
+          <type name="GParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_flags" c:identifier="g_param_spec_flags">
+      <return-value>
+        <type name="GParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="flags_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="default_value">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="flags">
+          <type name="GParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_float" c:identifier="g_param_spec_float">
+      <return-value>
+        <type name="GParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="minimum">
+          <type name="float" c:type="gfloat"/>
+        </parameter>
+        <parameter name="maximum">
+          <type name="float" c:type="gfloat"/>
+        </parameter>
+        <parameter name="default_value">
+          <type name="float" c:type="gfloat"/>
+        </parameter>
+        <parameter name="flags">
+          <type name="GParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_double" c:identifier="g_param_spec_double">
+      <return-value>
+        <type name="GParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="minimum">
+          <type name="double" c:type="gdouble"/>
+        </parameter>
+        <parameter name="maximum">
+          <type name="double" c:type="gdouble"/>
+        </parameter>
+        <parameter name="default_value">
+          <type name="double" c:type="gdouble"/>
+        </parameter>
+        <parameter name="flags">
+          <type name="GParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_string" c:identifier="g_param_spec_string">
+      <return-value>
+        <type name="GParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="default_value">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="flags">
+          <type name="GParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_param" c:identifier="g_param_spec_param">
+      <return-value>
+        <type name="GParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="param_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="flags">
+          <type name="GParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_boxed" c:identifier="g_param_spec_boxed">
+      <return-value>
+        <type name="GParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="boxed_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="flags">
+          <type name="GParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_pointer" c:identifier="g_param_spec_pointer">
+      <return-value>
+        <type name="GParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="flags">
+          <type name="GParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_value_array"
+              c:identifier="g_param_spec_value_array">
+      <return-value>
+        <type name="GParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="element_spec">
+          <type name="GParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+        <parameter name="flags">
+          <type name="GParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_object" c:identifier="g_param_spec_object">
+      <return-value>
+        <type name="GParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="object_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="flags">
+          <type name="GParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_override" c:identifier="g_param_spec_override">
+      <return-value>
+        <type name="GParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="overridden">
+          <type name="GParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_gtype" c:identifier="g_param_spec_gtype">
+      <return-value>
+        <type name="GParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="is_a_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="flags">
+          <type name="GParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="source_set_closure" c:identifier="g_source_set_closure">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="source">
+          <type name="GLib.GSource" c:type="GSource*"/>
+        </parameter>
+        <parameter name="closure">
+          <type name="GClosure" c:type="GClosure*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_channel_get_type" c:identifier="g_io_channel_get_type">
+      <return-value>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="io_condition_get_type"
+              c:identifier="g_io_condition_get_type">
+      <return-value>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <record name="TypeModule" c:type="GTypeModule"/>
+    <record name="GTypeModule" c:type="_GTypeModule">
+      <field name="parent_instance">
+        <type name="Object" c:type="GObject"/>
+      </field>
+      <field name="use_count">
+        <type name="uint32" c:type="guint"/>
+      </field>
+      <field name="type_infos">
+        <type name="GLib.GSList" c:type="GSList*"/>
+      </field>
+      <field name="interface_infos">
+        <type name="GLib.GSList" c:type="GSList*"/>
+      </field>
+      <field name="name">
+        <type name="string" c:type="gchar*"/>
+      </field>
+      <callback name="load">
+        <return-value>
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="module">
+            <type name="GTypeModule" c:type="GTypeModule*"/>
+          </parameter>
+        </parameters>
+      </callback>
+      <callback name="unload">
+        <return-value>
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="module">
+            <type name="GTypeModule" c:type="GTypeModule*"/>
+          </parameter>
+        </parameters>
+      </callback>
+      <callback name="reserved1">
+        <return-value>
+          <type name="none" c:type="void"/>
+        </return-value>
+      </callback>
+      <callback name="reserved2">
+        <return-value>
+          <type name="none" c:type="void"/>
+        </return-value>
+      </callback>
+      <callback name="reserved3">
+        <return-value>
+          <type name="none" c:type="void"/>
+        </return-value>
+      </callback>
+      <callback name="reserved4">
+        <return-value>
+          <type name="none" c:type="void"/>
+        </return-value>
+      </callback>
+    </record>
+    <function name="type_module_get_type"
+              c:identifier="g_type_module_get_type">
+      <return-value>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="type_module_use" c:identifier="g_type_module_use">
+      <return-value>
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="module">
+          <type name="GTypeModule" c:type="GTypeModule*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_module_unuse" c:identifier="g_type_module_unuse">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="module">
+          <type name="GTypeModule" c:type="GTypeModule*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_module_set_name"
+              c:identifier="g_type_module_set_name">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="module">
+          <type name="GTypeModule" c:type="GTypeModule*"/>
+        </parameter>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_module_register_type"
+              c:identifier="g_type_module_register_type">
+      <return-value>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="module">
+          <type name="GTypeModule" c:type="GTypeModule*"/>
+        </parameter>
+        <parameter name="parent_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="type_name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="type_info">
+          <type name="GTypeInfo" c:type="GTypeInfo*"/>
+        </parameter>
+        <parameter name="flags">
+          <type name="GTypeFlags" c:type="GTypeFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_module_add_interface"
+              c:identifier="g_type_module_add_interface">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="module">
+          <type name="GTypeModule" c:type="GTypeModule*"/>
+        </parameter>
+        <parameter name="instance_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="interface_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="interface_info">
+          <type name="GInterfaceInfo" c:type="GInterfaceInfo*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_module_register_enum"
+              c:identifier="g_type_module_register_enum">
+      <return-value>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="module">
+          <type name="GTypeModule" c:type="GTypeModule*"/>
+        </parameter>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="const_static_values">
+          <type name="GEnumValue" c:type="GEnumValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_module_register_flags"
+              c:identifier="g_type_module_register_flags">
+      <return-value>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="module">
+          <type name="GTypeModule" c:type="GTypeModule*"/>
+        </parameter>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+        <parameter name="const_static_values">
+          <type name="GFlagsValue" c:type="GFlagsValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <callback name="GTypePluginUse">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="plugin">
+          <type name="GTypePlugin" c:type="GTypePlugin*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GTypePluginUnuse">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="plugin">
+          <type name="GTypePlugin" c:type="GTypePlugin*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GTypePluginCompleteTypeInfo">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="plugin">
+          <type name="GTypePlugin" c:type="GTypePlugin*"/>
+        </parameter>
+        <parameter name="g_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="info">
+          <type name="GTypeInfo" c:type="GTypeInfo*"/>
+        </parameter>
+        <parameter name="value_table">
+          <type name="GTypeValueTable" c:type="GTypeValueTable*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GTypePluginCompleteInterfaceInfo">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="plugin">
+          <type name="GTypePlugin" c:type="GTypePlugin*"/>
+        </parameter>
+        <parameter name="instance_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="interface_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="info">
+          <type name="GInterfaceInfo" c:type="GInterfaceInfo*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <function name="type_plugin_get_type"
+              c:identifier="g_type_plugin_get_type">
+      <return-value>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="type_plugin_use" c:identifier="g_type_plugin_use">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="plugin">
+          <type name="GTypePlugin" c:type="GTypePlugin*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_plugin_unuse" c:identifier="g_type_plugin_unuse">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="plugin">
+          <type name="GTypePlugin" c:type="GTypePlugin*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_plugin_complete_type_info"
+              c:identifier="g_type_plugin_complete_type_info">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="plugin">
+          <type name="GTypePlugin" c:type="GTypePlugin*"/>
+        </parameter>
+        <parameter name="g_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="info">
+          <type name="GTypeInfo" c:type="GTypeInfo*"/>
+        </parameter>
+        <parameter name="value_table">
+          <type name="GTypeValueTable" c:type="GTypeValueTable*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_plugin_complete_interface_info"
+              c:identifier="g_type_plugin_complete_interface_info">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="plugin">
+          <type name="GTypePlugin" c:type="GTypePlugin*"/>
+        </parameter>
+        <parameter name="instance_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="interface_type">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="info">
+          <type name="GInterfaceInfo" c:type="GInterfaceInfo*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <record name="ValueArray" c:type="GValueArray"/>
+    <record name="GValueArray" c:type="_GValueArray">
+      <field name="n_values">
+        <type name="uint32" c:type="guint"/>
+      </field>
+      <field name="values">
+        <type name="GValue" c:type="GValue*"/>
+      </field>
+      <field name="n_prealloced">
+        <type name="uint32" c:type="guint"/>
+      </field>
+    </record>
+    <function name="value_array_get_nth" c:identifier="g_value_array_get_nth">
+      <return-value>
+        <type name="GValue" c:type="GValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value_array">
+          <type name="GValueArray" c:type="GValueArray*"/>
+        </parameter>
+        <parameter name="index_">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_array_new" c:identifier="g_value_array_new">
+      <return-value>
+        <type name="GValueArray" c:type="GValueArray*"/>
+      </return-value>
+      <parameters>
+        <parameter name="n_prealloced">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_array_free" c:identifier="g_value_array_free">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value_array">
+          <type name="GValueArray" c:type="GValueArray*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_array_copy" c:identifier="g_value_array_copy">
+      <return-value>
+        <type name="GValueArray" c:type="GValueArray*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value_array">
+          <type name="GValueArray" c:type="GValueArray*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_array_prepend" c:identifier="g_value_array_prepend">
+      <return-value>
+        <type name="GValueArray" c:type="GValueArray*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value_array">
+          <type name="GValueArray" c:type="GValueArray*"/>
+        </parameter>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_array_append" c:identifier="g_value_array_append">
+      <return-value>
+        <type name="GValueArray" c:type="GValueArray*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value_array">
+          <type name="GValueArray" c:type="GValueArray*"/>
+        </parameter>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_array_insert" c:identifier="g_value_array_insert">
+      <return-value>
+        <type name="GValueArray" c:type="GValueArray*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value_array">
+          <type name="GValueArray" c:type="GValueArray*"/>
+        </parameter>
+        <parameter name="index_">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_array_remove" c:identifier="g_value_array_remove">
+      <return-value>
+        <type name="GValueArray" c:type="GValueArray*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value_array">
+          <type name="GValueArray" c:type="GValueArray*"/>
+        </parameter>
+        <parameter name="index_">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_array_sort" c:identifier="g_value_array_sort">
+      <return-value>
+        <type name="GValueArray" c:type="GValueArray*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value_array">
+          <type name="GValueArray" c:type="GValueArray*"/>
+        </parameter>
+        <parameter name="compare_func">
+          <type name="GLib.GCompareFunc" c:type="GCompareFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_array_sort_with_data"
+              c:identifier="g_value_array_sort_with_data">
+      <return-value>
+        <type name="GValueArray" c:type="GValueArray*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value_array">
+          <type name="GValueArray" c:type="GValueArray*"/>
+        </parameter>
+        <parameter name="compare_func">
+          <type name="GLib.GCompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="user_data">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_char" c:identifier="g_value_set_char">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="v_char">
+          <type name="GLib.gchar" c:type="gchar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_char" c:identifier="g_value_get_char">
+      <return-value>
+        <type name="GLib.gchar" c:type="gchar"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_uchar" c:identifier="g_value_set_uchar">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="v_uchar">
+          <type name="GLib.guchar" c:type="guchar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_uchar" c:identifier="g_value_get_uchar">
+      <return-value>
+        <type name="GLib.guchar" c:type="guchar"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_boolean" c:identifier="g_value_set_boolean">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="v_boolean">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_boolean" c:identifier="g_value_get_boolean">
+      <return-value>
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_int" c:identifier="g_value_set_int">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="v_int">
+          <type name="int32" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_int" c:identifier="g_value_get_int">
+      <return-value>
+        <type name="int32" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_uint" c:identifier="g_value_set_uint">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="v_uint">
+          <type name="uint32" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_uint" c:identifier="g_value_get_uint">
+      <return-value>
+        <type name="uint32" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_long" c:identifier="g_value_set_long">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="v_long">
+          <type name="long" c:type="glong"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_long" c:identifier="g_value_get_long">
+      <return-value>
+        <type name="long" c:type="glong"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_ulong" c:identifier="g_value_set_ulong">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="v_ulong">
+          <type name="ulong" c:type="gulong"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_ulong" c:identifier="g_value_get_ulong">
+      <return-value>
+        <type name="ulong" c:type="gulong"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_int64" c:identifier="g_value_set_int64">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="v_int64">
+          <type name="gint64" c:type="gint64"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_int64" c:identifier="g_value_get_int64">
+      <return-value>
+        <type name="gint64" c:type="gint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_uint64" c:identifier="g_value_set_uint64">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="v_uint64">
+          <type name="guint64" c:type="guint64"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_uint64" c:identifier="g_value_get_uint64">
+      <return-value>
+        <type name="guint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_float" c:identifier="g_value_set_float">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="v_float">
+          <type name="float" c:type="gfloat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_float" c:identifier="g_value_get_float">
+      <return-value>
+        <type name="float" c:type="gfloat"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_double" c:identifier="g_value_set_double">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="v_double">
+          <type name="double" c:type="gdouble"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_double" c:identifier="g_value_get_double">
+      <return-value>
+        <type name="double" c:type="gdouble"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_string" c:identifier="g_value_set_string">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="v_string">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_static_string"
+              c:identifier="g_value_set_static_string">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="v_string">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_string" c:identifier="g_value_get_string">
+      <return-value>
+        <type name="string" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_dup_string" c:identifier="g_value_dup_string">
+      <return-value>
+        <type name="string" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_pointer" c:identifier="g_value_set_pointer">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="v_pointer">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_pointer" c:identifier="g_value_get_pointer">
+      <return-value>
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="gtype_get_type" c:identifier="g_gtype_get_type">
+      <return-value>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="value_set_gtype" c:identifier="g_value_set_gtype">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="v_gtype">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_gtype" c:identifier="g_value_get_gtype">
+      <return-value>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pointer_type_register_static"
+              c:identifier="g_pointer_type_register_static">
+      <return-value>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="name">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strdup_value_contents"
+              c:identifier="g_strdup_value_contents">
+      <return-value>
+        <type name="string" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_take_string" c:identifier="g_value_take_string">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="v_string">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_string_take_ownership"
+              c:identifier="g_value_set_string_take_ownership">
+      <return-value>
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value">
+          <type name="GValue" c:type="GValue*"/>
+        </parameter>
+        <parameter name="v_string">
+          <type name="string" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
   </namespace>
 </repository>
index 209c2d4..dfc7042 100644 (file)
@@ -121,6 +121,7 @@ find_attribute (const gchar  *name,
 static void
 state_switch (ParseContext *ctx, ParseState newstate)
 {
+  g_debug ("State: %d", newstate);
   ctx->prev_state = ctx->state;
   ctx->state = newstate;
 }
@@ -1350,6 +1351,7 @@ start_type (GMarkupParseContext *context,
        ctx->state == STATE_CLASS_PROPERTY ||
        ctx->state == STATE_CLASS_FIELD ||
        ctx->state == STATE_INTERFACE_FIELD ||
+       ctx->state == STATE_INTERFACE_PROPERTY ||
        ctx->state == STATE_BOXED_FIELD
        ))
     return FALSE;
@@ -2031,9 +2033,9 @@ start_element_handler (GMarkupParseContext *context,
   g_set_error (error,
               G_MARKUP_ERROR,
               G_MARKUP_ERROR_UNKNOWN_ELEMENT,
-              "Unexpected start tag '%s' on line %d char %d",
+              "Unexpected start tag '%s' on line %d char %d; current state=%d",
               element_name,
-              line_number, char_number);
+              line_number, char_number, ctx->state);
   
  out: ;
   if (*error) 
@@ -2047,6 +2049,7 @@ start_element_handler (GMarkupParseContext *context,
 
 static gboolean
 require_one_of_end_elements (GMarkupParseContext *context,
+                            ParseContext        *ctx,
                             const char          *actual_name,
                             GError             **error, 
                             ...)
@@ -2076,20 +2079,21 @@ require_one_of_end_elements (GMarkupParseContext *context,
   g_set_error (error,
               G_MARKUP_ERROR,
               G_MARKUP_ERROR_INVALID_CONTENT,
-              "Unexpected end tag '%s' on line %d char %d",
+              "Unexpected end tag '%s' on line %d char %d; current state=%d",
               actual_name, 
-              line_number, char_number);
+              line_number, char_number, ctx->state);
   backtrace_stderr();
   return FALSE;
 }
 
 static gboolean
 require_end_element (GMarkupParseContext *context,
+                    ParseContext        *ctx,
                     const char          *expected_name,
                     const char          *actual_name,
                     GError             **error)
 {
-  return require_one_of_end_elements (context, actual_name, error, expected_name, NULL);
+  return require_one_of_end_elements (context, ctx, actual_name, error, expected_name, NULL);
 }
 
 static void
@@ -2114,7 +2118,7 @@ end_element_handler (GMarkupParseContext *context,
       break;
 
     case STATE_NAMESPACE:
-      if (require_end_element (context, "namespace", element_name, error))
+      if (require_end_element (context, ctx, "namespace", element_name, error))
        {
           ctx->current_module = NULL;
           state_switch (ctx, STATE_REPOSITORY);
@@ -2122,7 +2126,7 @@ end_element_handler (GMarkupParseContext *context,
       break;
 
     case STATE_ALIAS:
-      if (require_end_element (context, "alias", element_name, error))
+      if (require_end_element (context, ctx, "alias", element_name, error))
        {
          state_switch (ctx, STATE_NAMESPACE);
        }
@@ -2131,14 +2135,14 @@ end_element_handler (GMarkupParseContext *context,
     case STATE_FUNCTION_RETURN:
       if (strcmp ("type", element_name) == 0)
        break;
-      if (require_end_element (context, "return-value", element_name, error))
+      if (require_end_element (context, ctx, "return-value", element_name, error))
        {
          state_switch (ctx, STATE_FUNCTION);
        }
       break;
 
     case STATE_FUNCTION_PARAMETERS:
-      if (require_end_element (context, "parameters", element_name, error))
+      if (require_end_element (context, ctx, "parameters", element_name, error))
        {
          state_switch (ctx, STATE_FUNCTION);
        }
@@ -2147,7 +2151,7 @@ end_element_handler (GMarkupParseContext *context,
     case STATE_FUNCTION_PARAMETER:
       if (strcmp ("type", element_name) == 0)
        break;
-      if (require_end_element (context, "parameter", element_name, error))
+      if (require_end_element (context, ctx, "parameter", element_name, error))
        {
          state_switch (ctx, STATE_FUNCTION_PARAMETERS);
        }
@@ -2189,7 +2193,7 @@ end_element_handler (GMarkupParseContext *context,
     case STATE_CLASS_FIELD:
       if (strcmp ("type", element_name) == 0)
        break;
-      if (require_end_element (context, "field", element_name, error))
+      if (require_end_element (context, ctx, "field", element_name, error))
        {
          state_switch (ctx, STATE_CLASS);
        }
@@ -2198,14 +2202,14 @@ end_element_handler (GMarkupParseContext *context,
     case STATE_CLASS_PROPERTY:
       if (strcmp ("type", element_name) == 0)
        break;
-      if (require_end_element (context, "property", element_name, error))
+      if (require_end_element (context, ctx, "property", element_name, error))
        {
          state_switch (ctx, STATE_CLASS);
        }
       break;
 
     case STATE_CLASS:
-      if (require_end_element (context, "class", element_name, error))
+      if (require_end_element (context, ctx, "class", element_name, error))
        {
          ctx->current_node = NULL;
          state_switch (ctx, STATE_NAMESPACE);
@@ -2213,7 +2217,7 @@ end_element_handler (GMarkupParseContext *context,
       break;
 
     case STATE_ERRORDOMAIN:
-      if (require_end_element (context, "errordomain", element_name, error))
+      if (require_end_element (context, ctx, "errordomain", element_name, error))
        {
          ctx->current_node = NULL;
          state_switch (ctx, STATE_NAMESPACE);
@@ -2221,7 +2225,9 @@ end_element_handler (GMarkupParseContext *context,
       break;
 
     case STATE_INTERFACE_PROPERTY:
-      if (require_end_element (context, "property", element_name, error))
+      if (strcmp ("type", element_name) == 0)
+       break;
+      if (require_end_element (context, ctx, "property", element_name, error))
        {
          state_switch (ctx, STATE_INTERFACE);
        }
@@ -2230,14 +2236,14 @@ end_element_handler (GMarkupParseContext *context,
     case STATE_INTERFACE_FIELD:
       if (strcmp ("type", element_name) == 0)
        break;
-      if (require_end_element (context, "field", element_name, error))
+      if (require_end_element (context, ctx, "field", element_name, error))
        {
          state_switch (ctx, STATE_INTERFACE);
        }
       break;
 
     case STATE_INTERFACE:
-      if (require_end_element (context, "interface", element_name, error))
+      if (require_end_element (context, ctx, "interface", element_name, error))
        {
          ctx->current_node = NULL;
          state_switch (ctx, STATE_NAMESPACE);
@@ -2247,7 +2253,9 @@ end_element_handler (GMarkupParseContext *context,
     case STATE_ENUM:
       if (strcmp ("member", element_name) == 0)
        break;
-      else if (require_one_of_end_elements (context, element_name, error, "enumeration", "bitfield", NULL))
+      else if (require_one_of_end_elements (context, ctx, 
+                                           element_name, error, "enumeration", 
+                                           "bitfield", NULL))
        {
          ctx->current_node = NULL;
          state_switch (ctx, STATE_NAMESPACE);
@@ -2255,7 +2263,7 @@ end_element_handler (GMarkupParseContext *context,
       break;
 
     case STATE_BOXED:
-      if (require_end_element (context, "glib:boxed", element_name, error))
+      if (require_end_element (context, ctx, "glib:boxed", element_name, error))
        {
          ctx->current_node = NULL;
          state_switch (ctx, STATE_NAMESPACE);
@@ -2265,7 +2273,7 @@ end_element_handler (GMarkupParseContext *context,
     case STATE_BOXED_FIELD:
       if (strcmp ("type", element_name) == 0)
        break;
-      if (require_end_element (context, "field", element_name, error))
+      if (require_end_element (context, ctx, "field", element_name, error))
        {
          state_switch (ctx, STATE_BOXED);
        }
@@ -2274,21 +2282,21 @@ end_element_handler (GMarkupParseContext *context,
     case STATE_STRUCT_FIELD:
       if (strcmp ("type", element_name) == 0)
        break;
-      if (require_end_element (context, "field", element_name, error))
+      if (require_end_element (context, ctx, "field", element_name, error))
        {
          state_switch (ctx, STATE_STRUCT);
        }
       break;
 
     case STATE_STRUCT:
-      if (require_end_element (context, "record", element_name, error))
+      if (require_end_element (context, ctx, "record", element_name, error))
        {
          ctx->current_node = NULL;
          state_switch (ctx, STATE_NAMESPACE);
        }
       break;
     case STATE_UNION:
-      if (require_end_element (context, "union", element_name, error))
+      if (require_end_element (context, ctx, "union", element_name, error))
        {
          ctx->current_node = NULL;
          state_switch (ctx, STATE_NAMESPACE);
@@ -2297,15 +2305,15 @@ end_element_handler (GMarkupParseContext *context,
     case STATE_IMPLEMENTS:
       if (strcmp ("interface", element_name) == 0)
        break;
-      if (require_end_element (context, "implements", element_name, error))
+      if (require_end_element (context, ctx, "implements", element_name, error))
         state_switch (ctx, STATE_CLASS);
       break;
     case STATE_REQUIRES:
-      if (require_end_element (context, "requires", element_name, error))
+      if (require_end_element (context, ctx, "requires", element_name, error))
         state_switch (ctx, STATE_INTERFACE);
       break;
     case STATE_CONSTANT:
-      if (require_end_element (context, "constant", element_name, error))
+      if (require_end_element (context, ctx, "constant", element_name, error))
        {
          ctx->current_node = NULL;
          state_switch (ctx, STATE_NAMESPACE);
index 564e2d9..9b84bd9 100644 (file)
@@ -145,13 +145,16 @@ class GLibTransformer(object):
         self._add_attribute(func)
 
     def _parse_get_type_function(self, func):
-        if not self._libraries:
-            return False
-        # GType *_get_type(void)
         symbol = func.symbol
         if not symbol.endswith('_get_type'):
             return False
+        if not self._libraries:
+            print "Warning: No libraries loaded, parsing _get_type function"
+            return False
+        # GType *_get_type(void)
         if func.retval.type.name != 'GObject.GType':
+            print "Warning: *_get_type function returns '%r'" + \
+                ", not GObject.GType"
             return False
         if func.parameters:
             return False
@@ -172,6 +175,13 @@ class GLibTransformer(object):
         self._introspect_type(type_id, symbol)
         return True
 
+    def _name_is_internal_gtype(self, giname):
+        try:
+            node = self._internal_types[giname]
+            return isinstance(node, (GLibObject, GLibInterface, GLibBoxed))
+        except KeyError, e:
+            return False
+
     def _parse_method(self, func):
         if not func.parameters:
             return False
@@ -180,7 +190,7 @@ class GLibTransformer(object):
         #        here, so we can find pointers to objects and not just
         #        pointers to anything
         first_arg = func.parameters[0].type.name
-        if first_arg.count('*') != 1:
+        if not self._name_is_internal_gtype(first_arg):
             return False
 
         object_name = first_arg.replace('*', '')
@@ -190,11 +200,11 @@ class GLibTransformer(object):
         # FIXME: This is hackish, we should preserve the pointer structures
         #        here, so we can find pointers to objects and not just
         #        pointers to anything
-        rtype = func.retval.type
-        if rtype.name.count('*') != 1:
+        rtype = func.retval.type.name
+        if not self._name_is_internal_gtype(rtype):
             return False
 
-        object_name = rtype.name.replace('*', '')
+        object_name = rtype.replace('*', '')
         return self._parse_method_common(func, object_name, is_method=False)
 
     def _parse_method_common(self, func, object_name, is_method):
@@ -220,10 +230,15 @@ class GLibTransformer(object):
 
     def _parse_struct(self, struct):
         # This is a hack, but GObject is a rather fundamental piece so.
+        internal_names = ["Object", 'InitiallyUnowned']
+        g_internal_names = ["G" + x for x in internal_names]
         if (self._namespace_name == 'GObject' and
-            struct.name in ["Object", 'InitiallyUnowned']):
+            struct.name in internal_names):
             self._create_gobject(struct)
             return
+        elif struct.name in g_internal_names:
+            # Avoid duplicates
+            return
         node = self._output_ns.get(struct.name)
         if node is None:
             self._add_attribute(struct, replace=True)
index acadc1d..093e6e8 100644 (file)
@@ -39,9 +39,9 @@ class Transformer(object):
         self.generator = generator
         self._namespace = Namespace(namespace_name)
         self._output_ns = {}
-        self._alias_names = {}
-        self._type_names = {}
-        self._ctype_names = {}
+        self._alias_names = {} # Maps from GIName -> GIName
+        self._type_names = {} # Maps from GTName -> (namespace, node)
+        self._ctype_names = {} # Maps from CType -> (namespace, node)
         self._typedefs_ns = {}
         self._strip_prefix = ''
         self._typedefs = {}
@@ -311,6 +311,7 @@ class Transformer(object):
         return '%s.%s' % (nsname, item.name)
 
     def resolve_type_name(self, type_name):
+        type_name = type_name.replace('*', '')
         resolved = self._type_names.get(type_name)
         if resolved:
             return self._typepair_to_str(resolved)