]> gitweb.factorcode.org Git - factor.git/commitdiff
clutter, gstreamer: return .gir files back to pass load-all tests on Windows and...
authorAnton Gorenko <ex.rzrjck@gmail.com>
Sat, 21 May 2011 14:58:09 +0000 (20:58 +0600)
committerAnton Gorenko <ex.rzrjck@gmail.com>
Sat, 21 May 2011 14:58:09 +0000 (20:58 +0600)
extra/clutter/Clutter-1.0.gir [new file with mode: 0644]
extra/clutter/cally/Cally-1.0.gir [new file with mode: 0644]
extra/clutter/cogl/Cogl-1.0.gir [new file with mode: 0644]
extra/clutter/gtk/GtkClutter-1.0.gir [new file with mode: 0644]
extra/clutter/gtk/ffi/ffi.factor
extra/clutter/json/Json-1.0.gir [new file with mode: 0644]
extra/gstreamer/Gst-0.10.gir [new file with mode: 0644]
extra/gstreamer/base/GstBase-0.10.gir [new file with mode: 0644]
extra/gstreamer/controller/GstController-0.10.gir [new file with mode: 0644]
extra/gstreamer/net/GstNet-0.10.gir [new file with mode: 0644]

diff --git a/extra/clutter/Clutter-1.0.gir b/extra/clutter/Clutter-1.0.gir
new file mode 100644 (file)
index 0000000..851f7da
--- /dev/null
@@ -0,0 +1,43145 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.2"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="Atk" version="1.0"/>
+  <include name="Cogl" version="1.0"/>
+  <include name="GL" version="1.0"/>
+  <include name="GLib" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gio" version="2.0"/>
+  <include name="Json" version="1.0"/>
+  <include name="Pango" version="1.0"/>
+  <include name="PangoCairo" version="1.0"/>
+  <include name="PangoFT2" version="1.0"/>
+  <include name="cairo" version="1.0"/>
+  <include name="fontconfig" version="2.0"/>
+  <include name="freetype2" version="2.0"/>
+  <package name="clutter-1.0"/>
+  <c:include name="clutter/clutter.h"/>
+  <namespace name="Clutter"
+             version="1.0"
+             shared-library="libclutter-glx-1.0.so.0"
+             c:identifier-prefixes="Clutter"
+             c:symbol-prefixes="clutter">
+    <constant name="0" value="48">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="1" value="49">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="2" value="50">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3" value="51">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_AltCursor" value="64784">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_Attn" value="64782">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_BackTab" value="64773">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_ChangeScreen" value="64793">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_Copy" value="64789">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_CursorBlink" value="64783">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_CursorSelect" value="64796">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_DeleteWord" value="64794">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_Duplicate" value="64769">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_Enter" value="64798">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_EraseEOF" value="64774">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_EraseInput" value="64775">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_ExSelect" value="64795">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_FieldMark" value="64770">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_Ident" value="64787">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_Jump" value="64786">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_KeyClick" value="64785">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_Left2" value="64772">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_PA1" value="64778">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_PA2" value="64779">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_PA3" value="64780">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_Play" value="64790">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_PrintScreen" value="64797">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_Quit" value="64777">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_Record" value="64792">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_Reset" value="64776">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_Right2" value="64771">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_Rule" value="64788">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_Setup" value="64791">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="3270_Test" value="64781">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="4" value="52">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="5" value="53">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="6" value="54">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="7" value="55">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="8" value="56">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="9" value="57">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="A" value="65">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AE" value="198">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Aacute" value="193">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Abelowdot" value="16785056">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Abreve" value="451">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Abreveacute" value="16785070">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Abrevebelowdot" value="16785078">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Abrevegrave" value="16785072">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Abrevehook" value="16785074">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Abrevetilde" value="16785076">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AccessX_Enable" value="65136">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AccessX_Feedback_Enable" value="65137">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Acircumflex" value="194">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Acircumflexacute" value="16785060">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Acircumflexbelowdot" value="16785068">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Acircumflexgrave" value="16785062">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Acircumflexhook" value="16785064">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Acircumflextilde" value="16785066">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Action"
+           c:symbol-prefix="action"
+           c:type="ClutterAction"
+           version="1.4"
+           parent="ActorMeta"
+           abstract="1"
+           glib:type-name="ClutterAction"
+           glib:get-type="clutter_action_get_type"
+           glib:type-struct="ActionClass">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;ClutterAction&lt;/structname&gt; structure contains only
+private data and should be accessed using the provided API</doc>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="ActorMeta" c:type="ClutterActorMeta"/>
+      </field>
+    </class>
+    <record name="ActionClass"
+            c:type="ClutterActionClass"
+            glib:is-gtype-struct-for="Action"
+            version="1.4">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;ClutterActionClass&lt;/structname&gt; structure contains
+only private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="ActorMetaClass" c:type="ClutterActorMetaClass"/>
+      </field>
+      <field name="_clutter_action1" introspectable="0">
+        <callback name="_clutter_action1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_action2" introspectable="0">
+        <callback name="_clutter_action2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_action3" introspectable="0">
+        <callback name="_clutter_action3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_action4" introspectable="0">
+        <callback name="_clutter_action4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_action5" introspectable="0">
+        <callback name="_clutter_action5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_action6" introspectable="0">
+        <callback name="_clutter_action6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_action7" introspectable="0">
+        <callback name="_clutter_action7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_action8" introspectable="0">
+        <callback name="_clutter_action8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="Actor"
+           c:symbol-prefix="actor"
+           c:type="ClutterActor"
+           parent="GObject.InitiallyUnowned"
+           abstract="1"
+           glib:type-name="ClutterActor"
+           glib:get-type="clutter_actor_get_type"
+           glib:type-struct="ActorClass">
+      <doc xml:whitespace="preserve">Base class for actors.</doc>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Animatable"/>
+      <implements name="Scriptable"/>
+      <virtual-method name="allocate" invoker="allocate" version="0.8">
+        <doc xml:whitespace="preserve">Called by the parent of an actor to assign the actor its size.
+Should never be called by applications (except when implementing
+a container or layout manager).
+Actors can know from their allocation box whether they have moved
+with respect to their parent actor. The @flags parameter describes
+additional information about the allocation, for instance whether
+the parent has moved with respect to the stage, for example because
+a grandparent's origin has moved.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="box" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new allocation of the actor, in parent-relative coordinates</doc>
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags that control the allocation</doc>
+            <type name="AllocationFlags" c:type="ClutterAllocationFlags"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="apply_transform">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="matrix" transfer-ownership="none">
+            <type name="Cogl.Matrix" c:type="CoglMatrix*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="button_press_event">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="ButtonEvent" c:type="ClutterButtonEvent*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="button_release_event">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="ButtonEvent" c:type="ClutterButtonEvent*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="captured_event">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="ClutterEvent*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="destroy" invoker="destroy">
+        <doc xml:whitespace="preserve">Destroys an actor.  When an actor is destroyed, it will break any
+references it holds to other objects.  If the actor is inside a
+container, the actor will be removed.
+When you destroy a container, its children will be destroyed as well.
+clutter_stage_get_default().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="enter_event">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="CrossingEvent" c:type="ClutterCrossingEvent*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="event">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="ClutterEvent*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_accessible" invoker="get_accessible">
+        <doc xml:whitespace="preserve">Returns the accessible object that describes the actor to an
+assistive technology.
+If no class-specific #AtkObject implementation is available for the
+actor instance in question, it will inherit an #AtkObject
+implementation from the first ancestor class for which such an
+implementation is defined.
+The documentation of the &lt;ulink
+url="http://developer.gnome.org/doc/API/2.0/atk/index.html"&gt;ATK&lt;/ulink&gt;
+library contains more information about accessible objects and
+their uses.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #AtkObject associated with @actor</doc>
+          <type name="Atk.Object" c:type="AtkObject*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_paint_volume">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="volume" transfer-ownership="none">
+            <type name="PaintVolume" c:type="ClutterPaintVolume*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_preferred_height"
+                      invoker="get_preferred_height"
+                      version="0.8">
+        <doc xml:whitespace="preserve">Computes the requested minimum and natural heights for an actor,
+or if they are already computed, returns the cached values.
+An actor may not get its request - depending on the layout
+manager that's in effect.
+A request should not incorporate the actor's scale or anchor point;
+those transformations do not affect layout, only rendering.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="for_width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">available width to assume in computing desired height, or a negative value to indicate that no width is defined</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="min_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for minimum height, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="natural_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for natural height, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_preferred_width"
+                      invoker="get_preferred_width"
+                      version="0.8">
+        <doc xml:whitespace="preserve">Computes the requested minimum and natural widths for an actor,
+optionally depending on the specified height, or if they are
+already computed, returns the cached values.
+An actor may not get its request - depending on the layout
+manager that's in effect.
+A request should not incorporate the actor's scale or anchor point;
+those transformations do not affect layout, only rendering.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="for_height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">available height when computing the preferred width, or a negative value to indicate that no height is defined</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="min_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for minimum width, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="natural_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the natural width, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="hide" invoker="hide">
+        <doc xml:whitespace="preserve">Flags an actor to be hidden. A hidden actor will not be
+rendered on the stage.
+Actors are visible by default.
+If this function is called on an actor without a parent, the
+#ClutterActor:show-on-set-parent property will be set to %FALSE
+as a side-effect.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="hide_all" invoker="hide_all" version="0.2">
+        <doc xml:whitespace="preserve">Calls clutter_actor_hide() on all child actors (if any).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="key_focus_in">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="key_focus_out">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="key_press_event">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="KeyEvent" c:type="ClutterKeyEvent*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="key_release_event">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="KeyEvent" c:type="ClutterKeyEvent*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="leave_event">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="CrossingEvent" c:type="ClutterCrossingEvent*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="map" invoker="map" version="1.0">
+        <doc xml:whitespace="preserve">Sets the %CLUTTER_ACTOR_MAPPED flag on the actor and possibly maps
+and realizes its children if they are visible. Does nothing if the
+actor is not visible.
+#ClutterActor &lt;function&gt;map()&lt;/function&gt; virtual function in an actor
+and you need to map the children of that actor. It is not necessary
+to call this if you implement #ClutterContainer because the default
+implementation will automatically map children of containers.
+When overriding map, it is mandatory to chain up to the parent
+implementation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="motion_event">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="MotionEvent" c:type="ClutterMotionEvent*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="paint" invoker="paint">
+        <doc xml:whitespace="preserve">Renders the actor to display.
+This function should not be called directly by applications.
+Call clutter_actor_queue_redraw() to queue paints, instead.
+This function is context-aware, and will either cause a
+regular paint or a pick paint.
+This function will emit the #ClutterActor::paint signal or
+the #ClutterActor::pick signal, depending on the context.
+This function does not paint the actor if the actor is set to 0,
+unless it is performing a pick paint.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="parent_set">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="old_parent" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="pick">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="queue_redraw">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="leaf_that_queued" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="queue_relayout"
+                      invoker="queue_relayout"
+                      version="0.8">
+        <doc xml:whitespace="preserve">Indicates that the actor's size request or other layout-affecting
+properties may have changed. This function is used inside #ClutterActor
+subclass implementations, not by applications directly.
+Queueing a new layout automatically queues a redraw as well.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="realize" invoker="realize">
+        <doc xml:whitespace="preserve">Realization informs the actor that it is attached to a stage. It
+can use this to allocate resources if it wanted to delay allocation
+until it would be rendered. However it is perfectly acceptable for
+an actor to create resources before being realized because Clutter
+only ever has a single rendering context so that actor is free to
+be moved from one stage to another.
+This function does nothing if the actor is already realized.
+Because a realized actor must have realized parent actors, calling
+clutter_actor_realize() will also realize all parents of the actor.
+This function does not realize child actors, except in the special
+case that realizing the stage, when the stage is visible, will
+suddenly map (and thus realize) the children of the stage.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="scroll_event">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="ScrollEvent" c:type="ClutterScrollEvent*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="show" invoker="show">
+        <doc xml:whitespace="preserve">Flags an actor to be displayed. An actor that isn't shown will not
+be rendered on the stage.
+Actors are visible by default.
+If this function is called on an actor without a parent, the
+#ClutterActor:show-on-set-parent will be set to %TRUE as a side
+effect.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="show_all" invoker="show_all" version="0.2">
+        <doc xml:whitespace="preserve">Calls clutter_actor_show() on all children of an actor (if any).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="unmap" invoker="unmap" version="1.0">
+        <doc xml:whitespace="preserve">Unsets the %CLUTTER_ACTOR_MAPPED flag on the actor and possibly
+unmaps its children if they were mapped.
+#ClutterActor &lt;function&gt;unmap()&lt;/function&gt; virtual function in an actor
+and you need to unmap the children of that actor. It is not necessary
+to call this if you implement #ClutterContainer because the default
+implementation will automatically unmap children of containers.
+When overriding unmap, it is mandatory to chain up to the parent
+implementation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="unrealize" invoker="unrealize">
+        <doc xml:whitespace="preserve">Unrealization informs the actor that it may be being destroyed or
+moved to another stage. The actor may want to destroy any
+underlying graphics resources at this point. However it is
+perfectly acceptable for it to retain the resources until the actor
+is destroyed because Clutter only ever uses a single rendering
+context and all of the graphics resources are valid on any stage.
+Because mapped actors must be realized, actors may not be
+unrealized if they are mapped. This function hides the actor to be
+sure it isn't mapped, an application-visible side effect that you
+may not be expecting.
+This function should not be called by application code.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <method name="add_action"
+              c:identifier="clutter_actor_add_action"
+              version="1.4">
+        <doc xml:whitespace="preserve">Adds @action to the list of actions applied to @self
+A #ClutterAction can only belong to one actor at a time
+The #ClutterActor will hold a reference on @action until either
+clutter_actor_remove_action() or clutter_actor_clear_actions()
+is called</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterAction</doc>
+            <type name="Action" c:type="ClutterAction*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_action_with_name"
+              c:identifier="clutter_actor_add_action_with_name"
+              version="1.4">
+        <doc xml:whitespace="preserve">A convenience function for setting the name of a #ClutterAction
+while adding it to the list of actions applied to @self
+This function is the logical equivalent of:
+|[
+clutter_actor_meta_set_name (CLUTTER_ACTOR_META (action), name);
+clutter_actor_add_action (self, action);
+]|</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name to set on the action</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="action" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterAction</doc>
+            <type name="Action" c:type="ClutterAction*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_constraint"
+              c:identifier="clutter_actor_add_constraint"
+              version="1.4">
+        <doc xml:whitespace="preserve">Adds @constraint to the list of #ClutterConstraint&lt;!-- --&gt;s applied
+to @self
+The #ClutterActor will hold a reference on the @constraint until
+either clutter_actor_remove_constraint() or
+clutter_actor_clear_constraints() is called.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="constraint" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterConstraint</doc>
+            <type name="Constraint" c:type="ClutterConstraint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_constraint_with_name"
+              c:identifier="clutter_actor_add_constraint_with_name"
+              version="1.4">
+        <doc xml:whitespace="preserve">A convenience function for setting the name of a #ClutterConstraint
+while adding it to the list of constraints applied to @self
+This function is the logical equivalent of:
+|[
+clutter_actor_meta_set_name (CLUTTER_ACTOR_META (constraint), name);
+clutter_actor_add_constraint (self, constraint);
+]|</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name to set on the constraint</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="constraint" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterConstraint</doc>
+            <type name="Constraint" c:type="ClutterConstraint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_effect"
+              c:identifier="clutter_actor_add_effect"
+              version="1.4">
+        <doc xml:whitespace="preserve">Adds @effect to the list of #ClutterEffect&lt;!-- --&gt;s applied to @self
+The #ClutterActor will hold a reference on the @effect until either
+clutter_actor_remove_effect() or clutter_actor_clear_effects() is
+called.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="effect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterEffect</doc>
+            <type name="Effect" c:type="ClutterEffect*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_effect_with_name"
+              c:identifier="clutter_actor_add_effect_with_name"
+              version="1.4">
+        <doc xml:whitespace="preserve">A convenience function for setting the name of a #ClutterEffect
+while adding it to the list of effectss applied to @self
+This function is the logical equivalent of:
+|[
+clutter_actor_meta_set_name (CLUTTER_ACTOR_META (effect), name);
+clutter_actor_add_effect (self, effect);
+]|</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name to set on the effect</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="effect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterEffect</doc>
+            <type name="Effect" c:type="ClutterEffect*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="allocate"
+              c:identifier="clutter_actor_allocate"
+              version="0.8">
+        <doc xml:whitespace="preserve">Called by the parent of an actor to assign the actor its size.
+Should never be called by applications (except when implementing
+a container or layout manager).
+Actors can know from their allocation box whether they have moved
+with respect to their parent actor. The @flags parameter describes
+additional information about the allocation, for instance whether
+the parent has moved with respect to the stage, for example because
+a grandparent's origin has moved.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="box" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new allocation of the actor, in parent-relative coordinates</doc>
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags that control the allocation</doc>
+            <type name="AllocationFlags" c:type="ClutterAllocationFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="allocate_align_fill"
+              c:identifier="clutter_actor_allocate_align_fill"
+              version="1.4">
+        <doc xml:whitespace="preserve">Allocates @self by taking into consideration the available allocation
+area; an alignment factor on either axis; and whether the actor should
+fill the allocation on either axis.
+The @box should contain the available allocation width and height;
+if the x1 and y1 members of #ClutterActorBox are not set to 0, the
+allocation will be offset by their value.
+This function takes into consideration the geometry request specified by
+the #ClutterActor:request-mode property, and the text direction.
+This function is useful for fluid layout managers, like #ClutterBinLayout
+or #ClutterTableLayout</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="box" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActorBox, containing the available width and height</doc>
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+          <parameter name="x_align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the horizontal alignment, between 0 and 1</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="y_align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the vertical alignment, between 0 and 1</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="x_fill" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the actor should fill horizontally</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="y_fill" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the actor should fill vertically</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">allocation flags to be passed to clutter_actor_allocate()</doc>
+            <type name="AllocationFlags" c:type="ClutterAllocationFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="allocate_available_size"
+              c:identifier="clutter_actor_allocate_available_size"
+              version="1.0">
+        <doc xml:whitespace="preserve">Allocates @self taking into account the #ClutterActor&lt;!-- --&gt;'s
+preferred size, but limiting it to the maximum available width
+and height provided.
+This function will do the right thing when dealing with the
+actor's request mode.
+The implementation of this function is equivalent to:
+|[
+if (request_mode == CLUTTER_REQUEST_HEIGHT_FOR_WIDTH)
+{
+clutter_actor_get_preferred_width (self, available_height,
+&amp;amp;min_width,
+&amp;amp;natural_width);
+width = CLAMP (natural_width, min_width, available_width);
+clutter_actor_get_preferred_height (self, width,
+&amp;amp;min_height,
+&amp;amp;natural_height);
+height = CLAMP (natural_height, min_height, available_height);
+}
+else
+{
+clutter_actor_get_preferred_height (self, available_width,
+&amp;amp;min_height,
+&amp;amp;natural_height);
+height = CLAMP (natural_height, min_height, available_height);
+clutter_actor_get_preferred_width (self, height,
+&amp;amp;min_width,
+&amp;amp;natural_width);
+width = CLAMP (natural_width, min_width, available_width);
+}
+box.x1 = x; box.y1 = y;
+box.x2 = box.x1 + available_width;
+box.y2 = box.y1 + available_height;
+clutter_actor_allocate (self, &amp;amp;box, flags);
+]|
+This function can be used by fluid layout managers to allocate
+an actor's preferred size without making it bigger than the area
+available for the container.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the actor's X coordinate</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the actor's Y coordinate</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="available_width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the maximum available width, or -1 to use the actor's natural width</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="available_height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the maximum available height, or -1 to use the actor's natural height</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags controlling the allocation</doc>
+            <type name="AllocationFlags" c:type="ClutterAllocationFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="allocate_preferred_size"
+              c:identifier="clutter_actor_allocate_preferred_size"
+              version="0.8">
+        <doc xml:whitespace="preserve">Allocates the natural size of @self.
+This function is a utility call for #ClutterActor implementations
+that allocates the actor's preferred natural size. It can be used
+by fixed layout managers (like #ClutterGroup or so called
+'composite actors') inside the ClutterActor::allocate
+implementation to give each child exactly how much space it
+requires.
+This function is not meant to be used by applications. It is also
+not meant to be used outside the implementation of the
+ClutterActor::allocate virtual function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags controlling the allocation</doc>
+            <type name="AllocationFlags" c:type="ClutterAllocationFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="animate"
+              c:identifier="clutter_actor_animate"
+              version="1.0"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Animates the given list of properties of @actor between the current
+value for each property and a new final value. The animation has a
+definite duration and a speed given by the @mode.
+For example, this:
+|[
+clutter_actor_animate (rectangle, CLUTTER_LINEAR, 250,
+"width", 100.0,
+"height", 100.0,
+NULL);
+]|
+will make width and height properties of the #ClutterActor "rectangle"
+grow linearly between the current value and 100 pixels, in 250 milliseconds.
+The animation @mode is a logical id, either from the #ClutterAnimationMode
+enumeration of from clutter_alpha_register_func().
+All the properties specified will be animated between the current value
+and the final value. If a property should be set at the beginning of
+the animation but not updated during the animation, it should be prefixed
+by the "fixed::" string, for instance:
+|[
+clutter_actor_animate (actor, CLUTTER_EASE_IN_SINE, 100,
+"rotation-angle-z", 360.0,
+"fixed::rotation-center-z", &amp;amp;center,
+NULL);
+]|
+Will animate the "rotation-angle-z" property between the current value
+and 360 degrees, and set the "rotation-center-z" property to the fixed
+value of the #ClutterVertex "center".
+This function will implicitly create a #ClutterAnimation object which
+will be assigned to the @actor and will be returned to the developer
+to control the animation or to know when the animation has been
+completed.
+If a name argument starts with "signal::", "signal-after::",
+"signal-swapped::" or "signal-swapped-after::" the two following arguments
+are used as callback function and data for a signal handler installed on
+the #ClutterAnimation object for the specified signal name, for instance:
+|[
+static void
+on_animation_completed (ClutterAnimation *animation,
+ClutterActor     *actor)
+{
+clutter_actor_hide (actor);
+}
+clutter_actor_animate (actor, CLUTTER_EASE_IN_CUBIC, 100,
+"opacity", 0,
+"signal::completed", on_animation_completed, actor,
+NULL);
+]|
+or, to automatically destroy an actor at the end of the animation:
+|[
+clutter_actor_animate (actor, CLUTTER_EASE_IN_CUBIC, 100,
+"opacity", 0,
+"signal-swapped-after::completed",
+clutter_actor_destroy,
+actor,
+NULL);
+]|
+The "signal::" modifier is the equivalent of using g_signal_connect();
+the "signal-after::" modifier is the equivalent of using
+g_signal_connect_after() or g_signal_connect_data() with the
+%G_CONNECT_AFTER; the "signal-swapped::" modifier is the equivalent
+of using g_signal_connect_swapped() or g_signal_connect_data() with the
+%G_CONNECT_SWAPPED flah; finally, the "signal-swapped-after::" modifier
+is the equivalent of using g_signal_connect_data() with both the
+%G_CONNECT_AFTER and %G_CONNECT_SWAPPED flags. The clutter_actor_animate()
+function will not keep track of multiple connections to the same signal,
+so it is your responsability to avoid them when calling
+clutter_actor_animate() multiple times on the same actor.
+Calling this function on an actor that is already being animated
+will cause the current animation to change with the new final values,
+the new easing mode and the new duration - that is, this code:
+|[
+clutter_actor_animate (actor, CLUTTER_LINEAR, 250,
+"width", 100.0,
+"height", 100.0,
+NULL);
+clutter_actor_animate (actor, CLUTTER_EASE_IN_CUBIC, 500,
+"x", 100.0,
+"y", 100.0,
+"width", 200.0,
+NULL);
+]|
+is the equivalent of:
+|[
+clutter_actor_animate (actor, CLUTTER_EASE_IN_CUBIC, 500,
+"x", 100.0,
+"y", 100.0,
+"width", 200.0,
+"height", 100.0,
+NULL);
+]|
+&lt;note&gt;Unless the animation is looping, the #ClutterAnimation created by
+clutter_actor_animate() will become invalid as soon as it is
+complete.&lt;/note&gt;
+Since the created #ClutterAnimation instance attached to @actor
+is guaranteed to be valid throughout the #ClutterAnimation::completed
+signal emission chain, you will not be able to create a new animation
+using clutter_actor_animate() on the same @actor from within the
+#ClutterAnimation::completed signal handler unless you use
+g_signal_connect_after() to connect the callback function, for instance:
+|[
+static void
+on_animation_completed (ClutterAnimation *animation,
+ClutterActor     *actor)
+{
+clutter_actor_animate (actor, CLUTTER_EASE_OUT_CUBIC, 250,
+"x", 500.0,
+"y", 500.0,
+NULL);
+}
+...
+animation = clutter_actor_animate (actor, CLUTTER_EASE_IN_CUBIC, 250,
+"x", 100.0,
+"y", 100.0,
+NULL);
+g_signal_connect (animation, "completed",
+G_CALLBACK (on_animation_completed),
+actor);
+...
+]|
+owned by the #ClutterActor and should not be unreferenced with
+g_object_unref()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterAnimation object. The object is</doc>
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an animation mode logical id</doc>
+            <type name="gulong" c:type="gulong"/>
+          </parameter>
+          <parameter name="duration" transfer-ownership="none">
+            <doc xml:whitespace="preserve">duration of the animation, in milliseconds</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="first_property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="animate_with_alpha"
+              c:identifier="clutter_actor_animate_with_alpha"
+              version="1.0"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Animates the given list of properties of @actor between the current
+value for each property and a new final value. The animation has a
+definite behaviour given by the passed @alpha.
+See clutter_actor_animate() for further details.
+This function is useful if you want to use an existing #ClutterAlpha
+to animate @actor.
+#ClutterActor and should not be unreferenced with g_object_unref()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterAnimation object. The object is owned by the</doc>
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterAlpha</doc>
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="first_property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="animate_with_alphav"
+              c:identifier="clutter_actor_animate_with_alphav"
+              version="1.0">
+        <doc xml:whitespace="preserve">Animates the given list of properties of @actor between the current
+value for each property and a new final value. The animation has a
+definite behaviour given by the passed @alpha.
+See clutter_actor_animate() for further details.
+This function is useful if you want to use an existing #ClutterAlpha
+to animate @actor.
+This is the vector-based variant of clutter_actor_animate_with_alpha(),
+useful for language bindings.
+&lt;warning&gt;Unlike clutter_actor_animate_with_alpha(), this function will
+not allow you to specify "signal::" names and callbacks.&lt;/warning&gt;
+#ClutterActor and should not be unreferenced with g_object_unref()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterAnimation object. The object is owned by the</doc>
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterAlpha</doc>
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="n_properties" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of property names and values</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="properties" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a vector containing the property names to set</doc>
+            <array length="1" c:type="gchar*">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a vector containing the property values to set</doc>
+            <array length="1" c:type="GValue*">
+              <type name="GObject.Value" c:type="GValue"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="animate_with_timeline"
+              c:identifier="clutter_actor_animate_with_timeline"
+              version="1.0"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Animates the given list of properties of @actor between the current
+value for each property and a new final value. The animation has a
+definite duration given by @timeline and a speed given by the @mode.
+See clutter_actor_animate() for further details.
+This function is useful if you want to use an existing timeline
+to animate @actor.
+owned by the #ClutterActor and should not be unreferenced with
+g_object_unref()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterAnimation object. The object is</doc>
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an animation mode logical id</doc>
+            <type name="gulong" c:type="gulong"/>
+          </parameter>
+          <parameter name="timeline" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterTimeline</doc>
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+          <parameter name="first_property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="animate_with_timelinev"
+              c:identifier="clutter_actor_animate_with_timelinev"
+              version="1.0">
+        <doc xml:whitespace="preserve">Animates the given list of properties of @actor between the current
+value for each property and a new final value. The animation has a
+definite duration given by @timeline and a speed given by the @mode.
+See clutter_actor_animate() for further details.
+This function is useful if you want to use an existing timeline
+to animate @actor.
+This is the vector-based variant of clutter_actor_animate_with_timeline(),
+useful for language bindings.
+&lt;warning&gt;Unlike clutter_actor_animate_with_timeline(), this function
+will not allow you to specify "signal::" names and callbacks.&lt;/warning&gt;
+owned by the #ClutterActor and should not be unreferenced with
+g_object_unref()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterAnimation object. The object is</doc>
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an animation mode logical id</doc>
+            <type name="gulong" c:type="gulong"/>
+          </parameter>
+          <parameter name="timeline" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterTimeline</doc>
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+          <parameter name="n_properties" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of property names and values</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="properties" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a vector containing the property names to set</doc>
+            <array length="2" c:type="gchar*">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a vector containing the property values to set</doc>
+            <array length="2" c:type="GValue*">
+              <type name="GObject.Value" c:type="GValue"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="animatev"
+              c:identifier="clutter_actor_animatev"
+              version="1.0">
+        <doc xml:whitespace="preserve">Animates the given list of properties of @actor between the current
+value for each property and a new final value. The animation has a
+definite duration and a speed given by the @mode.
+This is the vector-based variant of clutter_actor_animate(), useful
+for language bindings.
+&lt;warning&gt;Unlike clutter_actor_animate(), this function will not
+allow you to specify "signal::" names and callbacks.&lt;/warning&gt;
+owned by the #ClutterActor and should not be unreferenced with
+g_object_unref()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterAnimation object. The object is</doc>
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an animation mode logical id</doc>
+            <type name="gulong" c:type="gulong"/>
+          </parameter>
+          <parameter name="duration" transfer-ownership="none">
+            <doc xml:whitespace="preserve">duration of the animation, in milliseconds</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="n_properties" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of property names and values</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="properties" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a vector containing the property names to set</doc>
+            <array length="2" c:type="gchar*">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a vector containing the property values to set</doc>
+            <array length="2" c:type="GValue*">
+              <type name="GObject.Value" c:type="GValue"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="apply_relative_transform_to_point"
+              c:identifier="clutter_actor_apply_relative_transform_to_point"
+              version="0.6">
+        <doc xml:whitespace="preserve">Transforms @point in coordinates relative to the actor into
+ancestor-relative coordinates using the relevant transform
+stack (i.e. scale, rotation, etc).
+If @ancestor is %NULL the ancestor will be the #ClutterStage. In
+this case, the coordinates returned will be the coordinates on
+the stage before the projection is applied. This is different from
+the behaviour of clutter_actor_apply_transform_to_point().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ancestor" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">A #ClutterActor ancestor, or %NULL to use the default #ClutterStage</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="point" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A point as #ClutterVertex</doc>
+            <type name="Vertex" c:type="ClutterVertex*"/>
+          </parameter>
+          <parameter name="vertex" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The translated #ClutterVertex</doc>
+            <type name="Vertex" c:type="ClutterVertex*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="apply_transform_to_point"
+              c:identifier="clutter_actor_apply_transform_to_point"
+              version="0.4">
+        <doc xml:whitespace="preserve">Transforms @point in coordinates relative to the actor
+into screen-relative coordinates with the current actor
+transformation (i.e. scale, rotation, etc)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="point" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A point as #ClutterVertex</doc>
+            <type name="Vertex" c:type="ClutterVertex*"/>
+          </parameter>
+          <parameter name="vertex" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The translated #ClutterVertex</doc>
+            <type name="Vertex" c:type="ClutterVertex*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear_actions"
+              c:identifier="clutter_actor_clear_actions"
+              version="1.4">
+        <doc xml:whitespace="preserve">Clears the list of actions applied to @self</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="clear_constraints"
+              c:identifier="clutter_actor_clear_constraints"
+              version="1.4">
+        <doc xml:whitespace="preserve">Clears the list of constraints applied to @self</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="clear_effects"
+              c:identifier="clutter_actor_clear_effects"
+              version="1.4">
+        <doc xml:whitespace="preserve">Clears the list of effects applied to @self</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="contains"
+              c:identifier="clutter_actor_contains"
+              version="1.4">
+        <doc xml:whitespace="preserve">Determines if @descendant is contained inside @self (either as an
+immediate child, or as a deeper descendant). If @self and</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether @descendent is contained within @self</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="descendant" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #ClutterActor, possibly contained in @self</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_pango_context"
+              c:identifier="clutter_actor_create_pango_context"
+              version="1.0">
+        <doc xml:whitespace="preserve">Creates a #PangoContext for the given actor. The #PangoContext
+is already configured using the appropriate font map, resolution
+and font options.
+See also clutter_actor_get_pango_context().
+Use g_object_unref() on the returned value to deallocate its
+resources</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #PangoContext.</doc>
+          <type name="Pango.Context" c:type="PangoContext*"/>
+        </return-value>
+      </method>
+      <method name="create_pango_layout"
+              c:identifier="clutter_actor_create_pango_layout"
+              version="1.0">
+        <doc xml:whitespace="preserve">Creates a new #PangoLayout from the same #PangoContext used
+by the #ClutterActor. The #PangoLayout is already configured
+with the font map, resolution and font options, and the
+given @text.
+If you want to keep around a #PangoLayout created by this
+function you will have to connect to the #ClutterBackend::font-changed
+and #ClutterBackend::resolution-changed signals, and call
+pango_layout_context_changed() in response to them.
+Use g_object_unref() when done</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #PangoLayout.</doc>
+          <type name="Pango.Layout" c:type="PangoLayout*"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">(allow-none) the text to set on the #PangoLayout, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="destroy" c:identifier="clutter_actor_destroy">
+        <doc xml:whitespace="preserve">Destroys an actor.  When an actor is destroyed, it will break any
+references it holds to other objects.  If the actor is inside a
+container, the actor will be removed.
+When you destroy a container, its children will be destroyed as well.
+clutter_stage_get_default().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="detach_animation"
+              c:identifier="clutter_actor_detach_animation"
+              version="1.4">
+        <doc xml:whitespace="preserve">Detaches the #ClutterAnimation used by @actor, if clutter_actor_animate()
+has been called on @actor.
+Once the animation has been detached, it loses a reference. If it was
+the only reference then the #ClutterAnimation becomes invalid.
+The #ClutterAnimation::completed signal will not be emitted.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="event" c:identifier="clutter_actor_event" version="0.6">
+        <doc xml:whitespace="preserve">This function is used to emit an event on the main stage.
+You should rarely need to use this function, except for
+synthetising events.
+if the actor handled the event, or %FALSE if the event was
+not handled</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the return value from the signal emission: %TRUE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterEvent</doc>
+            <type name="Event" c:type="ClutterEvent*"/>
+          </parameter>
+          <parameter name="capture" transfer-ownership="none">
+            <doc xml:whitespace="preserve">TRUE if event in in capture phase, FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_abs_allocation_vertices"
+              c:identifier="clutter_actor_get_abs_allocation_vertices"
+              version="0.4">
+        <doc xml:whitespace="preserve">Calculates the transformed screen coordinates of the four corners of
+the actor; the returned vertices relate to the #ClutterActorBox
+coordinates  as follows:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;v[0] contains (x1, y1)&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;v[1] contains (x2, y1)&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;v[2] contains (x1, y2)&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;v[3] contains (x2, y2)&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="verts"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a location of an array of 4 #ClutterVertex where to store the result.</doc>
+            <array c:type="ClutterVertex" fixed-size="4">
+              <type name="Vertex" c:type="ClutterVertex"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_accessible"
+              c:identifier="clutter_actor_get_accessible">
+        <doc xml:whitespace="preserve">Returns the accessible object that describes the actor to an
+assistive technology.
+If no class-specific #AtkObject implementation is available for the
+actor instance in question, it will inherit an #AtkObject
+implementation from the first ancestor class for which such an
+implementation is defined.
+The documentation of the &lt;ulink
+url="http://developer.gnome.org/doc/API/2.0/atk/index.html"&gt;ATK&lt;/ulink&gt;
+library contains more information about accessible objects and
+their uses.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #AtkObject associated with @actor</doc>
+          <type name="Atk.Object" c:type="AtkObject*"/>
+        </return-value>
+      </method>
+      <method name="get_action"
+              c:identifier="clutter_actor_get_action"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterAction with the given name in the list
+of actions applied to @self
+name, or %NULL. The returned #ClutterAction is owned by the
+actor and it should not be unreferenced directly</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterAction for the given</doc>
+          <type name="Action" c:type="ClutterAction*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action to retrieve</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_actions"
+              c:identifier="clutter_actor_get_actions"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the list of actions applied to @self
+of the list of #ClutterAction&lt;!-- --&gt;s. The contents of the list are
+owned by the #ClutterActor. Use g_list_free() to free the resources
+allocated by the returned #GList</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a copy</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="Action"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_allocation_box"
+              c:identifier="clutter_actor_get_allocation_box"
+              version="0.8">
+        <doc xml:whitespace="preserve">Gets the layout box an actor has been assigned. The allocation can
+only be assumed valid inside a paint() method; anywhere else, it
+may be out-of-date.
+An allocation does not incorporate the actor's scale or anchor point;
+those transformations do not affect layout, only rendering.
+&lt;note&gt;Do not call any of the clutter_actor_get_allocation_*() family
+of functions inside the implementation of the get_preferred_width()
+or get_preferred_height() virtual functions.&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="box"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">the function fills this in with the actor's allocation</doc>
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_allocation_geometry"
+              c:identifier="clutter_actor_get_allocation_geometry"
+              version="0.8">
+        <doc xml:whitespace="preserve">Gets the layout box an actor has been assigned.  The allocation can
+only be assumed valid inside a paint() method; anywhere else, it
+may be out-of-date.
+An allocation does not incorporate the actor's scale or anchor point;
+those transformations do not affect layout, only rendering.
+The returned rectangle is in pixels.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="geom"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">allocation geometry in pixels</doc>
+            <type name="Geometry" c:type="ClutterGeometry*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_allocation_vertices"
+              c:identifier="clutter_actor_get_allocation_vertices"
+              version="0.6">
+        <doc xml:whitespace="preserve">Calculates the transformed coordinates of the four corners of the
+actor in the plane of @ancestor. The returned vertices relate to
+the #ClutterActorBox coordinates as follows:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;@verts[0] contains (x1, y1)&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;@verts[1] contains (x2, y1)&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;@verts[2] contains (x1, y2)&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;@verts[3] contains (x2, y2)&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+If @ancestor is %NULL the ancestor will be the #ClutterStage. In
+this case, the coordinates returned will be the coordinates on
+the stage before the projection is applied. This is different from
+the behaviour of clutter_actor_get_abs_allocation_vertices().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ancestor" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">A #ClutterActor to calculate the vertices against, or %NULL to use the #ClutterStage</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="verts"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for an array of 4 #ClutterVertex in which to store the result</doc>
+            <array c:type="ClutterVertex" fixed-size="4">
+              <type name="Vertex"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_anchor_point"
+              c:identifier="clutter_actor_get_anchor_point"
+              version="0.6">
+        <doc xml:whitespace="preserve">Gets the current anchor point of the @actor in pixels.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="anchor_x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the X coordinate of the anchor point</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="anchor_y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the Y coordinate of the anchor point</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_anchor_point_gravity"
+              c:identifier="clutter_actor_get_anchor_point_gravity"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the anchor position expressed as a #ClutterGravity. If
+the anchor point was specified using pixels or units this will
+return %CLUTTER_GRAVITY_NONE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #ClutterGravity used by the anchor point</doc>
+          <type name="Gravity" c:type="ClutterGravity"/>
+        </return-value>
+      </method>
+      <method name="get_animation"
+              c:identifier="clutter_actor_get_animation"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterAnimation used by @actor, if clutter_actor_animate()
+has been called on @actor.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterAnimation, or %NULL</doc>
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+      </method>
+      <method name="get_clip"
+              c:identifier="clutter_actor_get_clip"
+              version="0.6">
+        <doc xml:whitespace="preserve">Gets the clip area for @self, if any is set</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xoff"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the X offset of the clip rectangle, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="yoff"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the Y offset of the clip rectangle, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the width of the clip rectangle, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the height of the clip rectangle, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_clip_to_allocation"
+              c:identifier="clutter_actor_get_clip_to_allocation"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the value set using clutter_actor_set_clip_to_allocation()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #ClutterActor is clipped to its allocation</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_constraint"
+              c:identifier="clutter_actor_get_constraint"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterConstraint with the given name in the list
+of constraints applied to @self
+name, or %NULL. The returned #ClutterConstraint is owned by the
+actor and it should not be unreferenced directly</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterConstraint for the given</doc>
+          <type name="Constraint" c:type="ClutterConstraint*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the constraint to retrieve</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_constraints"
+              c:identifier="clutter_actor_get_constraints"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the list of constraints applied to @self
+of the list of #ClutterConstraint&lt;!-- --&gt;s. The contents of the list are
+owned by the #ClutterActor. Use g_list_free() to free the resources
+allocated by the returned #GList</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a copy</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="Constraint"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_depth" c:identifier="clutter_actor_get_depth">
+        <doc xml:whitespace="preserve">Retrieves the depth of @self.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the depth of the actor</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_effect"
+              c:identifier="clutter_actor_get_effect"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterEffect with the given name in the list
+of effects applied to @self
+name, or %NULL. The returned #ClutterEffect is owned by the
+actor and it should not be unreferenced directly</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterEffect for the given</doc>
+          <type name="Effect" c:type="ClutterEffect*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the effect to retrieve</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_effects"
+              c:identifier="clutter_actor_get_effects"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterEffect&lt;!-- --&gt;s applied on @self, if any
+of #ClutterEffect&lt;!-- --&gt;s, or %NULL. The elements of the returned
+list are owned by Clutter and they should not be freed. You should
+free the returned list using g_list_free() when done</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a list</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="Effect"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_fixed_position_set"
+              c:identifier="clutter_actor_get_fixed_position_set"
+              version="0.8">
+        <doc xml:whitespace="preserve">Checks whether an actor has a fixed position set (and will thus be
+unaffected by any layout manager).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the fixed position is set on the actor</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_flags"
+              c:identifier="clutter_actor_get_flags"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the flags set on @self</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a bitwise or of #ClutterActorFlags or 0</doc>
+          <type name="ActorFlags" c:type="ClutterActorFlags"/>
+        </return-value>
+      </method>
+      <method name="get_geometry" c:identifier="clutter_actor_get_geometry">
+        <doc xml:whitespace="preserve">Gets the size and position of an actor relative to its parent
+actor. This is the same as calling clutter_actor_get_position() and
+clutter_actor_get_size(). It tries to "do what you mean" and get the
+requested size and position if the actor's allocation is invalid.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="geometry"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">A location to store actors #ClutterGeometry</doc>
+            <type name="Geometry" c:type="ClutterGeometry*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_gid"
+              c:identifier="clutter_actor_get_gid"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the unique id for @self.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Globally unique value for this object instance.</doc>
+          <type name="guint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="get_height" c:identifier="clutter_actor_get_height">
+        <doc xml:whitespace="preserve">Retrieves the height of a #ClutterActor.
+If the actor has a valid allocation, this function will return the
+height of the allocated area given to the actor.
+If the actor does not have a valid allocation, this function will
+return the actor's natural height, that is the preferred height of
+the actor.
+If you care whether you get the preferred height or the height that
+has been assigned to the actor, you should probably call a different
+function like clutter_actor_get_allocation_box() to retrieve the
+allocated size or clutter_actor_get_preferred_height() to retrieve the
+preferred height.
+If an actor has a fixed height, for instance a height that has been
+assigned using clutter_actor_set_height(), the height returned will
+be the same value.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the height of the actor, in pixels</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_name" c:identifier="clutter_actor_get_name">
+        <doc xml:whitespace="preserve">Retrieves the name of @self.
+owned by the actor and should not be modified or freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the actor, or %NULL. The returned string is</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_opacity" c:identifier="clutter_actor_get_opacity">
+        <doc xml:whitespace="preserve">Retrieves the opacity value of an actor, as set by
+clutter_actor_set_opacity().
+For retrieving the absolute opacity of the actor inside a paint
+virtual function, see clutter_actor_get_paint_opacity().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the opacity of the actor</doc>
+          <type name="guint8" c:type="guint8"/>
+        </return-value>
+      </method>
+      <method name="get_paint_box"
+              c:identifier="clutter_actor_get_paint_box"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the paint volume of the passed #ClutterActor, and
+transforms it into a 2D bounding box in stage coordinates.
+This function is useful to determine the on screen area occupied by
+the actor. The box is only an approximation and may often be
+considerably larger due to the optimizations used to calculate the
+box. The box is never smaller though, so it can reliably be used
+for culling.
+There are times when a 2D paint box can't be determined, e.g.
+because the actor isn't yet parented under a stage or because
+the actor is unable to determine a paint volume.
+%FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if a 2D paint box could be determined, else</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="box"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for a #ClutterActorBox</doc>
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_paint_opacity"
+              c:identifier="clutter_actor_get_paint_opacity"
+              version="0.8">
+        <doc xml:whitespace="preserve">Retrieves the absolute opacity of the actor, as it appears on the stage.
+This function traverses the hierarchy chain and composites the opacity of
+the actor with that of its parents.
+This function is intended for subclasses to use in the paint virtual
+function, to paint themselves with the correct opacity.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The actor opacity value.</doc>
+          <type name="guint8" c:type="guint8"/>
+        </return-value>
+      </method>
+      <method name="get_paint_visibility"
+              c:identifier="clutter_actor_get_paint_visibility"
+              version="0.8.4">
+        <doc xml:whitespace="preserve">Retrieves the 'paint' visibility of an actor recursively checking for non
+visible parents.
+This is by definition the same as CLUTTER_ACTOR_IS_MAPPED().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the actor is visibile and will be painted.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_paint_volume"
+              c:identifier="clutter_actor_get_paint_volume"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the paint volume of the passed #ClutterActor, or %NULL
+when a paint volume can't be determined.
+The paint volume is defined as the 3D space occupied by an actor
+when being painted.
+This function will call the &lt;function&gt;get_paint_volume()&lt;/function&gt;
+virtual function of the #ClutterActor class. Sub-classes of #ClutterActor
+should not usually care about overriding the default implementation,
+actors with a depth factor (not in terms of #ClutterActor:depth but real
+3D depth).
+&lt;note&gt;2D actors overriding &lt;function&gt;get_paint_volume()&lt;/function&gt;
+ensure their volume has a depth of 0. (This will be true so long as
+you don't call clutter_paint_volume_set_depth().)&lt;/note&gt;
+or %NULL if no volume could be determined.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to a #ClutterPaintVolume</doc>
+          <type name="PaintVolume" c:type="ClutterPaintVolume*"/>
+        </return-value>
+      </method>
+      <method name="get_pango_context"
+              c:identifier="clutter_actor_get_pango_context"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the #PangoContext for @self. The actor's #PangoContext
+is already configured using the appropriate font map, resolution
+and font options.
+Unlike clutter_actor_create_pango_context(), this context is owend
+by the #ClutterActor and it will be updated each time the options
+stored by the #ClutterBackend change.
+You can use the returned #PangoContext to create a #PangoLayout
+and render text using cogl_pango_render_layout() to reuse the
+glyphs cache also used by Clutter.
+The returned #PangoContext is owned by the actor and should not be
+unreferenced by the application code</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #PangoContext for a #ClutterActor.</doc>
+          <type name="Pango.Context" c:type="PangoContext*"/>
+        </return-value>
+      </method>
+      <method name="get_parent" c:identifier="clutter_actor_get_parent">
+        <doc xml:whitespace="preserve">Retrieves the parent of @self.
+if no parent is set</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #ClutterActor parent, or %NULL</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="get_position"
+              c:identifier="clutter_actor_get_position"
+              version="0.6">
+        <doc xml:whitespace="preserve">This function tries to "do what you mean" and tell you where the
+actor is, prior to any transformations. Retrieves the fixed
+position of an actor in pixels, if one has been set; otherwise, if
+the allocation is valid, returns the actor's allocated position;
+otherwise, returns 0,0.
+The returned position is in pixels.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the X coordinate, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the Y coordinate, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_preferred_height"
+              c:identifier="clutter_actor_get_preferred_height"
+              version="0.8">
+        <doc xml:whitespace="preserve">Computes the requested minimum and natural heights for an actor,
+or if they are already computed, returns the cached values.
+An actor may not get its request - depending on the layout
+manager that's in effect.
+A request should not incorporate the actor's scale or anchor point;
+those transformations do not affect layout, only rendering.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="for_width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">available width to assume in computing desired height, or a negative value to indicate that no width is defined</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="min_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for minimum height, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="natural_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for natural height, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_preferred_size"
+              c:identifier="clutter_actor_get_preferred_size"
+              version="0.8">
+        <doc xml:whitespace="preserve">Computes the preferred minimum and natural size of an actor, taking into
+account the actor's geometry management (either height-for-width
+or width-for-height).
+The width and height used to compute the preferred height and preferred
+width are the actor's natural ones.
+If you need to control the height for the preferred width, or the width for
+the preferred height, you should use clutter_actor_get_preferred_width()
+and clutter_actor_get_preferred_height(), and check the actor's preferred
+geometry management using the #ClutterActor:request-mode property.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the minimum width, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="min_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the minimum height, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="natural_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the natural width, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="natural_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the natural height, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_preferred_width"
+              c:identifier="clutter_actor_get_preferred_width"
+              version="0.8">
+        <doc xml:whitespace="preserve">Computes the requested minimum and natural widths for an actor,
+optionally depending on the specified height, or if they are
+already computed, returns the cached values.
+An actor may not get its request - depending on the layout
+manager that's in effect.
+A request should not incorporate the actor's scale or anchor point;
+those transformations do not affect layout, only rendering.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="for_height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">available height when computing the preferred width, or a negative value to indicate that no height is defined</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="min_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for minimum width, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="natural_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the natural width, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_reactive"
+              c:identifier="clutter_actor_get_reactive"
+              version="0.6">
+        <doc xml:whitespace="preserve">Checks whether @actor is marked as reactive.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the actor is reactive</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_request_mode"
+              c:identifier="clutter_actor_get_request_mode"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the geometry request mode of @self</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the request mode for the actor</doc>
+          <type name="RequestMode" c:type="ClutterRequestMode"/>
+        </return-value>
+      </method>
+      <method name="get_rotation"
+              c:identifier="clutter_actor_get_rotation"
+              version="0.8">
+        <doc xml:whitespace="preserve">Retrieves the angle and center of rotation on the given axis,
+set using clutter_actor_set_rotation().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the angle of rotation</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="axis" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the axis of rotation</doc>
+            <type name="RotateAxis" c:type="ClutterRotateAxis"/>
+          </parameter>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return value for the X coordinate of the center of rotation</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return value for the Y coordinate of the center of rotation</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="z"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return value for the Z coordinate of the center of rotation</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_scale"
+              c:identifier="clutter_actor_get_scale"
+              version="0.2">
+        <doc xml:whitespace="preserve">Retrieves an actors scale factors.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="scale_x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">Location to store horizonal scale factor, or %NULL.</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="scale_y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">Location to store vertical scale factor, or %NULL.</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_scale_center"
+              c:identifier="clutter_actor_get_scale_center"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the scale center coordinate in pixels relative to the top
+left corner of the actor. If the scale center was specified using a
+#ClutterGravity this will calculate the pixel offset using the
+current size of the actor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="center_x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">Location to store the X position of the scale center, or %NULL.</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="center_y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">Location to store the Y position of the scale center, or %NULL.</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_scale_gravity"
+              c:identifier="clutter_actor_get_scale_gravity"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the scale center as a compass direction. If the scale
+center was specified in pixels or units this will return
+%CLUTTER_GRAVITY_NONE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the scale gravity</doc>
+          <type name="Gravity" c:type="ClutterGravity"/>
+        </return-value>
+      </method>
+      <method name="get_shader"
+              c:identifier="clutter_actor_get_shader"
+              version="0.6">
+        <doc xml:whitespace="preserve">Queries the currently set #ClutterShader on @self.
+or %NULL if no shader is set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The currently set #ClutterShader</doc>
+          <type name="Shader" c:type="ClutterShader*"/>
+        </return-value>
+      </method>
+      <method name="get_size"
+              c:identifier="clutter_actor_get_size"
+              version="0.2">
+        <doc xml:whitespace="preserve">This function tries to "do what you mean" and return
+the size an actor will have. If the actor has a valid
+allocation, the allocation will be returned; otherwise,
+the actors natural size request will be returned.
+If you care whether you get the request vs. the allocation, you
+should probably call a different function like
+clutter_actor_get_allocation_box() or
+clutter_actor_get_preferred_width().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the width, or %NULL.</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the height, or %NULL.</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_stage"
+              c:identifier="clutter_actor_get_stage"
+              version="0.8">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterStage where @actor is contained.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the stage containing the actor, or %NULL</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="get_text_direction"
+              c:identifier="clutter_actor_get_text_direction"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the value set using clutter_actor_set_text_direction()
+If no text direction has been previously set, the default text
+direction, as returned by clutter_get_default_text_direction(), will
+be returned instead</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #ClutterTextDirection for the actor</doc>
+          <type name="TextDirection" c:type="ClutterTextDirection"/>
+        </return-value>
+      </method>
+      <method name="get_transformation_matrix"
+              c:identifier="clutter_actor_get_transformation_matrix"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the transformations applied to @self relative to its
+parent.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="matrix"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">the return location for a #CoglMatrix</doc>
+            <type name="Cogl.Matrix" c:type="CoglMatrix*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_transformed_paint_volume"
+              c:identifier="clutter_actor_get_transformed_paint_volume"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the 3D paint volume of an actor like
+clutter_actor_get_paint_volume() does (Please refer to the
+documentation of clutter_actor_get_paint_volume() for more
+details.) and it additionally transforms the paint volume into the
+coordinate space of @relative_to_ancestor. (Or the stage if %NULL
+is passed for @relative_to_ancestor)
+This can be used by containers that base their paint volume on
+the volume of their children. Such containers can query the
+transformed paint volume of all of its children and union them
+together using clutter_paint_volume_union().
+or %NULL if no volume could be determined.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to a #ClutterPaintVolume</doc>
+          <type name="PaintVolume" c:type="ClutterPaintVolume*"/>
+        </return-value>
+        <parameters>
+          <parameter name="relative_to_ancestor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #ClutterActor that is an ancestor of @self (or %NULL for the stage)</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_transformed_position"
+              c:identifier="clutter_actor_get_transformed_position"
+              version="0.8">
+        <doc xml:whitespace="preserve">Gets the absolute position of an actor, in pixels relative to the stage.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the X coordinate, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the Y coordinate, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_transformed_size"
+              c:identifier="clutter_actor_get_transformed_size"
+              version="0.8">
+        <doc xml:whitespace="preserve">Gets the absolute size of an actor in pixels, taking into account the
+scaling factors.
+If the actor has a valid allocation, the allocated size will be used.
+If the actor has not a valid allocation then the preferred size will
+be transformed and returned.
+If you want the transformed allocation, see
+clutter_actor_get_abs_allocation_vertices() instead.
+&lt;note&gt;When the actor (or one of its ancestors) is rotated around the
+X or Y axis, it no longer appears as on the stage as a rectangle, but
+as a generic quadrangle; in that case this function returns the size
+of the smallest rectangle that encapsulates the entire quad. Please
+note that in this case no assumptions can be made about the relative
+position of this envelope to the absolute position of the actor, as
+returned by clutter_actor_get_transformed_position(); if you need this
+information, you need to use clutter_actor_get_abs_allocation_vertices()
+to get the coords of the actual quadrangle.&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the width, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the height, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_width" c:identifier="clutter_actor_get_width">
+        <doc xml:whitespace="preserve">Retrieves the width of a #ClutterActor.
+If the actor has a valid allocation, this function will return the
+width of the allocated area given to the actor.
+If the actor does not have a valid allocation, this function will
+return the actor's natural width, that is the preferred width of
+the actor.
+If you care whether you get the preferred width or the width that
+has been assigned to the actor, you should probably call a different
+function like clutter_actor_get_allocation_box() to retrieve the
+allocated size or clutter_actor_get_preferred_width() to retrieve the
+preferred width.
+If an actor has a fixed width, for instance a width that has been
+assigned using clutter_actor_set_width(), the width returned will
+be the same value.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the width of the actor, in pixels</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_x" c:identifier="clutter_actor_get_x">
+        <doc xml:whitespace="preserve">Retrieves the X coordinate of a #ClutterActor.
+This function tries to "do what you mean", by returning the
+correct value depending on the actor's state.
+If the actor has a valid allocation, this function will return
+the X coordinate of the origin of the allocation box.
+If the actor has any fixed coordinate set using clutter_actor_set_x(),
+clutter_actor_set_position() or clutter_actor_set_geometry(), this
+function will return that coordinate.
+If both the allocation and a fixed position are missing, this function
+will return 0.
+transformation (i.e. scaling, rotation)</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the X coordinate, in pixels, ignoring any</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_y" c:identifier="clutter_actor_get_y">
+        <doc xml:whitespace="preserve">Retrieves the Y coordinate of a #ClutterActor.
+This function tries to "do what you mean", by returning the
+correct value depending on the actor's state.
+If the actor has a valid allocation, this function will return
+the Y coordinate of the origin of the allocation box.
+If the actor has any fixed coordinate set using clutter_actor_set_y(),
+clutter_actor_set_position() or clutter_actor_set_geometry(), this
+function will return that coordinate.
+If both the allocation and a fixed position are missing, this function
+will return 0.
+transformation (i.e. scaling, rotation)</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the Y coordinate, in pixels, ignoring any</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_z_rotation_gravity"
+              c:identifier="clutter_actor_get_z_rotation_gravity"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the center for the rotation around the Z axis as a
+compass direction. If the center was specified in pixels or units
+this will return %CLUTTER_GRAVITY_NONE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the Z rotation center</doc>
+          <type name="Gravity" c:type="ClutterGravity"/>
+        </return-value>
+      </method>
+      <method name="grab_key_focus"
+              c:identifier="clutter_actor_grab_key_focus"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the key focus of the #ClutterStage including @self
+to this #ClutterActor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="has_allocation"
+              c:identifier="clutter_actor_has_allocation"
+              version="1.4">
+        <doc xml:whitespace="preserve">Checks if the actor has an up-to-date allocation assigned to
+visible and has a parent. It also means that there is no
+outstanding relayout request in progress for the actor or its
+children (There might be other outstanding layout requests in
+progress that will cause the actor to get a new allocation
+when the stage is laid out, however).
+If this function returns %FALSE, then the actor will normally
+be allocated before it is next drawn on the screen.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the actor has an up-to-date allocation</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="has_clip"
+              c:identifier="clutter_actor_has_clip"
+              version="0.1.1">
+        <doc xml:whitespace="preserve">Determines whether the actor has a clip area set or not.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the actor has a clip area set.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="has_key_focus"
+              c:identifier="clutter_actor_has_key_focus"
+              version="1.4">
+        <doc xml:whitespace="preserve">Checks whether @self is the #ClutterActor that has key focus</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the actor has key focus, and %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="has_pointer"
+              c:identifier="clutter_actor_has_pointer"
+              version="1.2">
+        <doc xml:whitespace="preserve">Checks whether an actor contains the pointer of a
+#ClutterInputDevice
+%FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the actor contains the pointer, and</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="hide" c:identifier="clutter_actor_hide">
+        <doc xml:whitespace="preserve">Flags an actor to be hidden. A hidden actor will not be
+rendered on the stage.
+Actors are visible by default.
+If this function is called on an actor without a parent, the
+#ClutterActor:show-on-set-parent property will be set to %FALSE
+as a side-effect.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="hide_all"
+              c:identifier="clutter_actor_hide_all"
+              version="0.2">
+        <doc xml:whitespace="preserve">Calls clutter_actor_hide() on all child actors (if any).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="is_in_clone_paint"
+              c:identifier="clutter_actor_is_in_clone_paint"
+              version="1.0">
+        <doc xml:whitespace="preserve">Checks whether @self is being currently painted by a #ClutterClone
+This function is useful only inside the ::paint virtual function
+implementations or within handlers for the #ClutterActor::paint
+signal
+This function should not be used by applications
+by a #ClutterClone, and %FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #ClutterActor is currently being painted</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_rotated"
+              c:identifier="clutter_actor_is_rotated"
+              version="0.6">
+        <doc xml:whitespace="preserve">Checks whether any rotation is applied to the actor.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the actor is rotated.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_scaled"
+              c:identifier="clutter_actor_is_scaled"
+              version="0.6">
+        <doc xml:whitespace="preserve">Checks whether the actor is scaled in either dimension.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the actor is scaled.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="lower" c:identifier="clutter_actor_lower">
+        <doc xml:whitespace="preserve">Puts @self below @above.
+Both actors must have the same parent, and the parent must implement
+the #ClutterContainer interface.
+This function is the equivalent of clutter_container_lower_child().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="above" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">A #ClutterActor to lower below</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lower_bottom" c:identifier="clutter_actor_lower_bottom">
+        <doc xml:whitespace="preserve">Lowers @self to the bottom.
+This function calls clutter_actor_lower() internally.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="map" c:identifier="clutter_actor_map" version="1.0">
+        <doc xml:whitespace="preserve">Sets the %CLUTTER_ACTOR_MAPPED flag on the actor and possibly maps
+and realizes its children if they are visible. Does nothing if the
+actor is not visible.
+#ClutterActor &lt;function&gt;map()&lt;/function&gt; virtual function in an actor
+and you need to map the children of that actor. It is not necessary
+to call this if you implement #ClutterContainer because the default
+implementation will automatically map children of containers.
+When overriding map, it is mandatory to chain up to the parent
+implementation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="move_anchor_point"
+              c:identifier="clutter_actor_move_anchor_point"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets an anchor point for the actor, and adjusts the actor postion so that
+the relative position of the actor toward its parent remains the same.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="anchor_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate of the anchor point</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="anchor_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate of the anchor point</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move_anchor_point_from_gravity"
+              c:identifier="clutter_actor_move_anchor_point_from_gravity"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets an anchor point on the actor based on the given gravity, adjusting the
+actor postion so that its relative position within its parent remains
+unchanged.
+Since version 1.0 the anchor point will be stored as a gravity so
+that if the actor changes size then the anchor point will move. For
+example, if you set the anchor point to %CLUTTER_GRAVITY_SOUTH_EAST
+and later double the size of the actor, the anchor point will move
+to the bottom right.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gravity" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#ClutterGravity.</doc>
+            <type name="Gravity" c:type="ClutterGravity"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move_by"
+              c:identifier="clutter_actor_move_by"
+              version="0.2">
+        <doc xml:whitespace="preserve">Moves an actor by the specified distance relative to its current
+position in pixels.
+This function modifies the fixed position of an actor and thus removes
+it from any layout management. Another way to move an actor is with an
+anchor point, see clutter_actor_set_anchor_point().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dx" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Distance to move Actor on X axis.</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="dy" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Distance to move Actor on Y axis.</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="paint" c:identifier="clutter_actor_paint">
+        <doc xml:whitespace="preserve">Renders the actor to display.
+This function should not be called directly by applications.
+Call clutter_actor_queue_redraw() to queue paints, instead.
+This function is context-aware, and will either cause a
+regular paint or a pick paint.
+This function will emit the #ClutterActor::paint signal or
+the #ClutterActor::pick signal, depending on the context.
+This function does not paint the actor if the actor is set to 0,
+unless it is performing a pick paint.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="pop_internal"
+              c:identifier="clutter_actor_pop_internal"
+              version="1.2">
+        <doc xml:whitespace="preserve">Disables the effects of clutter_actor_push_internal()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="push_internal"
+              c:identifier="clutter_actor_push_internal"
+              version="1.2">
+        <doc xml:whitespace="preserve">Should be used by actors implementing the #ClutterContainer and with
+internal children added through clutter_actor_set_parent(), for instance:
+|[
+static void
+my_actor_init (MyActor *self)
+{
+self-&gt;priv = SELF_ACTOR_GET_PRIVATE (self);
+clutter_actor_push_internal (CLUTTER_ACTOR (self));
+/&amp;ast; calling clutter_actor_set_parent() now will result in
+&amp;ast; the internal flag being set on a child of MyActor
+&amp;ast;/
+/&amp;ast; internal child - a background texture &amp;ast;/
+self-&gt;priv-&gt;background_tex = clutter_texture_new ();
+clutter_actor_set_parent (self-&gt;priv-&gt;background_tex,
+CLUTTER_ACTOR (self));
+/&amp;ast; internal child - a label &amp;ast;/
+self-&gt;priv-&gt;label = clutter_text_new ();
+clutter_actor_set_parent (self-&gt;priv-&gt;label,
+CLUTTER_ACTOR (self));
+clutter_actor_pop_internal (CLUTTER_ACTOR (self));
+/&amp;ast; calling clutter_actor_set_parent() now will not result in
+&amp;ast; the internal flag being set on a child of MyActor
+&amp;ast;/
+}
+]|
+This function will be used by Clutter to toggle an "internal child"
+flag whenever clutter_actor_set_parent() is called; internal children
+are handled differently by Clutter, specifically when destroying their
+parent.
+Call clutter_actor_pop_internal() when you finished adding internal
+children.
+Nested calls to clutter_actor_push_internal() are allowed, but each
+one must by followed by a clutter_actor_pop_internal() call.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="queue_redraw" c:identifier="clutter_actor_queue_redraw">
+        <doc xml:whitespace="preserve">Queues up a redraw of an actor and any children. The redraw occurs
+once the main loop becomes idle (after the current batch of events
+has been processed, roughly).
+Applications rarely need to call this, as redraws are handled
+automatically by modification functions.
+This function will not do anything if @self is not visible, or
+if the actor is inside an invisible part of the scenegraph.
+Also be aware that painting is a NOP for actors with an opacity of
+0
+When you are implementing a custom actor you must queue a redraw
+whenever some private state changes that will affect painting or
+picking of your actor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="queue_relayout"
+              c:identifier="clutter_actor_queue_relayout"
+              version="0.8">
+        <doc xml:whitespace="preserve">Indicates that the actor's size request or other layout-affecting
+properties may have changed. This function is used inside #ClutterActor
+subclass implementations, not by applications directly.
+Queueing a new layout automatically queues a redraw as well.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="raise" c:identifier="clutter_actor_raise">
+        <doc xml:whitespace="preserve">Puts @self above @below.
+Both actors must have the same parent, and the parent must implement
+the #ClutterContainer interface
+This function is the equivalent of clutter_container_raise_child().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="below" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">A #ClutterActor to raise above.</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="raise_top" c:identifier="clutter_actor_raise_top">
+        <doc xml:whitespace="preserve">Raises @self to the top.
+This function calls clutter_actor_raise() internally.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="realize" c:identifier="clutter_actor_realize">
+        <doc xml:whitespace="preserve">Realization informs the actor that it is attached to a stage. It
+can use this to allocate resources if it wanted to delay allocation
+until it would be rendered. However it is perfectly acceptable for
+an actor to create resources before being realized because Clutter
+only ever has a single rendering context so that actor is free to
+be moved from one stage to another.
+This function does nothing if the actor is already realized.
+Because a realized actor must have realized parent actors, calling
+clutter_actor_realize() will also realize all parents of the actor.
+This function does not realize child actors, except in the special
+case that realizing the stage, when the stage is visible, will
+suddenly map (and thus realize) the children of the stage.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="remove_action"
+              c:identifier="clutter_actor_remove_action"
+              version="1.4">
+        <doc xml:whitespace="preserve">Removes @action from the list of actions applied to @self
+The reference held by @self on the #ClutterAction will be released</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterAction</doc>
+            <type name="Action" c:type="ClutterAction*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_action_by_name"
+              c:identifier="clutter_actor_remove_action_by_name"
+              version="1.4">
+        <doc xml:whitespace="preserve">Removes the #ClutterAction with the given name from the list
+of actions applied to @self</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action to remove</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_clip" c:identifier="clutter_actor_remove_clip">
+        <doc xml:whitespace="preserve">Removes clip area from @self.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="remove_constraint"
+              c:identifier="clutter_actor_remove_constraint"
+              version="1.4">
+        <doc xml:whitespace="preserve">Removes @constraint from the list of constraints applied to @self
+The reference held by @self on the #ClutterConstraint will be released</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="constraint" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterConstraint</doc>
+            <type name="Constraint" c:type="ClutterConstraint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_constraint_by_name"
+              c:identifier="clutter_actor_remove_constraint_by_name"
+              version="1.4">
+        <doc xml:whitespace="preserve">Removes the #ClutterConstraint with the given name from the list
+of constraints applied to @self</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the constraint to remove</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_effect"
+              c:identifier="clutter_actor_remove_effect"
+              version="1.4">
+        <doc xml:whitespace="preserve">Removes @effect from the list of effects applied to @self
+The reference held by @self on the #ClutterEffect will be released</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="effect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterEffect</doc>
+            <type name="Effect" c:type="ClutterEffect*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_effect_by_name"
+              c:identifier="clutter_actor_remove_effect_by_name"
+              version="1.4">
+        <doc xml:whitespace="preserve">Removes the #ClutterEffect with the given name from the list
+of effects applied to @self</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the effect to remove</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reparent"
+              c:identifier="clutter_actor_reparent"
+              version="0.2">
+        <doc xml:whitespace="preserve">This function resets the parent actor of @self.  It is
+logically equivalent to calling clutter_actor_unparent()
+and clutter_actor_set_parent(), but more efficiently
+implemented, ensures the child is not finalized
+when unparented, and emits the parent-set signal only
+one time.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_parent" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new #ClutterActor parent</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_anchor_point"
+              c:identifier="clutter_actor_set_anchor_point"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets an anchor point for @self. The anchor point is a point in the
+coordinate space of an actor to which the actor position within its
+parent is relative; the default is (0, 0), i.e. the top-left corner
+of the actor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="anchor_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate of the anchor point</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="anchor_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate of the anchor point</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_anchor_point_from_gravity"
+              c:identifier="clutter_actor_set_anchor_point_from_gravity"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets an anchor point on the actor, based on the given gravity (this is a
+convenience function wrapping clutter_actor_set_anchor_point()).
+Since version 1.0 the anchor point will be stored as a gravity so
+that if the actor changes size then the anchor point will move. For
+example, if you set the anchor point to %CLUTTER_GRAVITY_SOUTH_EAST
+and later double the size of the actor, the anchor point will move
+to the bottom right.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gravity" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#ClutterGravity.</doc>
+            <type name="Gravity" c:type="ClutterGravity"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_clip"
+              c:identifier="clutter_actor_set_clip"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets clip area for @self. The clip area is always computed from the
+upper left corner of the actor, even if the anchor point is set
+otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xoff" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X offset of the clip rectangle</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="yoff" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y offset of the clip rectangle</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Width of the clip rectangle</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Height of the clip rectangle</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_clip_to_allocation"
+              c:identifier="clutter_actor_set_clip_to_allocation"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets whether @self should be clipped to the same size as its
+allocation</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="clip_set" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to apply a clip tracking the allocation</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_depth" c:identifier="clutter_actor_set_depth">
+        <doc xml:whitespace="preserve">Sets the Z coordinate of @self to @depth.
+The unit used by @depth is dependant on the perspective setup. See
+also clutter_stage_set_perspective().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="depth" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Z co-ord</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_fixed_position_set"
+              c:identifier="clutter_actor_set_fixed_position_set"
+              version="0.8">
+        <doc xml:whitespace="preserve">Sets whether an actor has a fixed position set (and will thus be
+unaffected by any layout manager).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="is_set" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to use fixed position</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_flags"
+              c:identifier="clutter_actor_set_flags"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets @flags on @self
+This function will emit notifications for the changed properties</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the flags to set</doc>
+            <type name="ActorFlags" c:type="ClutterActorFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_geometry" c:identifier="clutter_actor_set_geometry">
+        <doc xml:whitespace="preserve">Sets the actor's fixed position and forces its minimum and natural
+size, in pixels. This means the untransformed actor will have the
+given geometry. This is the same as calling clutter_actor_set_position()
+and clutter_actor_set_size().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="geometry" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #ClutterGeometry</doc>
+            <type name="Geometry" c:type="ClutterGeometry*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_height"
+              c:identifier="clutter_actor_set_height"
+              version="0.2">
+        <doc xml:whitespace="preserve">Forces a height on an actor, causing the actor's preferred width
+and height (if any) to be ignored.
+If @height is -1 the actor will use its preferred height instead of
+overriding it, i.e. you can "unset" the height with -1.
+This function sets both the minimum and natural size of the actor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Requested new height for the actor, in pixels, or -1</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_name" c:identifier="clutter_actor_set_name">
+        <doc xml:whitespace="preserve">Sets the given name to @self. The name can be used to identify
+a #ClutterActor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Textual tag to apply to actor</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_opacity" c:identifier="clutter_actor_set_opacity">
+        <doc xml:whitespace="preserve">Sets the actor's opacity, with zero being completely transparent and
+255 (0xff) being fully opaque.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="opacity" transfer-ownership="none">
+            <doc xml:whitespace="preserve">New opacity value for the actor.</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_parent" c:identifier="clutter_actor_set_parent">
+        <doc xml:whitespace="preserve">Sets the parent of @self to @parent.  The opposite function is
+clutter_actor_unparent().
+This function should not be used by applications, but by custom
+container actor subclasses.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A new #ClutterActor parent</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_position" c:identifier="clutter_actor_set_position">
+        <doc xml:whitespace="preserve">Sets the actor's fixed position in pixels relative to any parent
+actor.
+If a layout manager is in use, this position will override the
+layout manager and force a fixed position.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">New left position of actor in pixels.</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">New top position of actor in pixels.</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_reactive"
+              c:identifier="clutter_actor_set_reactive"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets @actor as reactive. Reactive actors will receive events.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="reactive" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the actor should be reactive to events</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_request_mode"
+              c:identifier="clutter_actor_set_request_mode"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets the geometry request mode of @self.
+The @mode determines the order for invoking
+clutter_actor_get_preferred_width() and
+clutter_actor_get_preferred_height()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the request mode</doc>
+            <type name="RequestMode" c:type="ClutterRequestMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_rotation"
+              c:identifier="clutter_actor_set_rotation"
+              version="0.8">
+        <doc xml:whitespace="preserve">Sets the rotation angle of @self around the given axis.
+The rotation center coordinates used depend on the value of @axis:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;%CLUTTER_X_AXIS requires @y and @z&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;%CLUTTER_Y_AXIS requires @x and @z&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;%CLUTTER_Z_AXIS requires @x and @y&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+The rotation coordinates are relative to the anchor point of the
+actor, set using clutter_actor_set_anchor_point(). If no anchor
+point is set, the upper left corner is assumed as the origin.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="axis" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the axis of rotation</doc>
+            <type name="RotateAxis" c:type="ClutterRotateAxis"/>
+          </parameter>
+          <parameter name="angle" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the angle of rotation</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate of the rotation center</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate of the rotation center</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="z" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Z coordinate of the rotation center</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_scale"
+              c:identifier="clutter_actor_set_scale"
+              version="0.2">
+        <doc xml:whitespace="preserve">Scales an actor with the given factors. The scaling is relative to
+the scale center and the anchor point. The scale center is
+unchanged by this function and defaults to 0,0.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="scale_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">double factor to scale actor by horizontally.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="scale_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">double factor to scale actor by vertically.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_scale_full"
+              c:identifier="clutter_actor_set_scale_full"
+              version="1.0">
+        <doc xml:whitespace="preserve">Scales an actor with the given factors around the given center
+point. The center point is specified in pixels relative to the
+anchor point (usually the top left corner of the actor).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="scale_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">double factor to scale actor by horizontally.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="scale_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">double factor to scale actor by vertically.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="center_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate of the center of the scale.</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="center_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate of the center of the scale</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_scale_with_gravity"
+              c:identifier="clutter_actor_set_scale_with_gravity"
+              version="1.0">
+        <doc xml:whitespace="preserve">Scales an actor with the given factors around the given
+center point. The center point is specified as one of the compass
+directions in #ClutterGravity. For example, setting it to north
+will cause the top of the actor to remain unchanged and the rest of
+the actor to expand left, right and downwards.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="scale_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">double factor to scale actor by horizontally.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="scale_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">double factor to scale actor by vertically.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="gravity" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the location of the scale center expressed as a compass direction.</doc>
+            <type name="Gravity" c:type="ClutterGravity"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_shader"
+              c:identifier="clutter_actor_set_shader"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets the #ClutterShader to be used when rendering @self.
+If @shader is %NULL this function will unset any currently set shader
+for the actor.
+&lt;note&gt;Any #ClutterEffect applied to @self will take the precedence
+over the #ClutterShader set using this function.&lt;/note&gt;
+or removed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the shader was successfully applied</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="shader" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterShader or %NULL to unset the shader.</doc>
+            <type name="Shader" c:type="ClutterShader*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_shader_param"
+              c:identifier="clutter_actor_set_shader_param"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the value for a named parameter of the shader applied
+to @actor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="param" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the parameter</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the parameter</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_shader_param_float"
+              c:identifier="clutter_actor_set_shader_param_float"
+              version="0.8">
+        <doc xml:whitespace="preserve">Sets the value for a named float parameter of the shader applied
+to @actor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="param" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the parameter</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the parameter</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_shader_param_int"
+              c:identifier="clutter_actor_set_shader_param_int"
+              version="0.8">
+        <doc xml:whitespace="preserve">Sets the value for a named int parameter of the shader applied to</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="param" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the parameter</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the parameter</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_size" c:identifier="clutter_actor_set_size">
+        <doc xml:whitespace="preserve">Sets the actor's size request in pixels. This overrides any
+"normal" size request the actor would have. For example
+a text actor might normally request the size of the text;
+this function would force a specific size instead.
+If @width and/or @height are -1 the actor will use its
+"normal" size request instead of overriding it, i.e.
+you can "unset" the size with -1.
+This function sets or unsets both the minimum and natural size.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">New width of actor in pixels, or -1</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">New height of actor in pixels, or -1</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_text_direction"
+              c:identifier="clutter_actor_set_text_direction"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets the #ClutterTextDirection for an actor
+The passed text direction must not be %CLUTTER_TEXT_DIRECTION_DEFAULT
+If @self implements #ClutterContainer then this function will recurse
+inside all the children of @self (including the internal ones).
+Composite actors not implementing #ClutterContainer, or actors requiring
+special handling when the text direction changes, should connect to
+the #GObject::notify signal for the #ClutterActor:text-direction property</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text_dir" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the text direction for @self</doc>
+            <type name="TextDirection" c:type="ClutterTextDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_width"
+              c:identifier="clutter_actor_set_width"
+              version="0.2">
+        <doc xml:whitespace="preserve">Forces a width on an actor, causing the actor's preferred width
+and height (if any) to be ignored.
+If @width is -1 the actor will use its preferred width request
+instead of overriding it, i.e. you can "unset" the width with -1.
+This function sets both the minimum and natural size of the actor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Requested new width for the actor, in pixels, or -1</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_x" c:identifier="clutter_actor_set_x" version="0.6">
+        <doc xml:whitespace="preserve">Sets the actor's X coordinate, relative to its parent, in pixels.
+Overrides any layout manager and forces a fixed position for
+the actor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the actor's position on the X axis</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_y" c:identifier="clutter_actor_set_y" version="0.6">
+        <doc xml:whitespace="preserve">Sets the actor's Y coordinate, relative to its parent, in pixels.#
+Overrides any layout manager and forces a fixed position for
+the actor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the actor's position on the Y axis</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_z_rotation_from_gravity"
+              c:identifier="clutter_actor_set_z_rotation_from_gravity"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the rotation angle of @self around the Z axis using the center
+point specified as a compass point. For example to rotate such that
+the center of the actor remains static you can use
+%CLUTTER_GRAVITY_CENTER. If the actor changes size the center point
+will move accordingly.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the angle of rotation</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="gravity" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the center point of the rotation</doc>
+            <type name="Gravity" c:type="ClutterGravity"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="should_pick_paint"
+              c:identifier="clutter_actor_should_pick_paint">
+        <doc xml:whitespace="preserve">Should be called inside the implementation of the
+#ClutterActor::pick virtual function in order to check whether
+the actor should paint itself in pick mode or not.
+This function should never be called directly by applications.
+%FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the actor should paint its silhouette,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="show" c:identifier="clutter_actor_show">
+        <doc xml:whitespace="preserve">Flags an actor to be displayed. An actor that isn't shown will not
+be rendered on the stage.
+Actors are visible by default.
+If this function is called on an actor without a parent, the
+#ClutterActor:show-on-set-parent will be set to %TRUE as a side
+effect.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="show_all"
+              c:identifier="clutter_actor_show_all"
+              version="0.2">
+        <doc xml:whitespace="preserve">Calls clutter_actor_show() on all children of an actor (if any).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="transform_stage_point"
+              c:identifier="clutter_actor_transform_stage_point"
+              version="0.6">
+        <doc xml:whitespace="preserve">This function translates screen coordinates (@x, @y) to
+coordinates relative to the actor. For example, it can be used to translate
+screen events from global screen coordinates into actor-local coordinates.
+The conversion can fail, notably if the transform stack results in the
+actor being projected on the screen as a mere line.
+The conversion should not be expected to be pixel-perfect due to the
+nature of the operation. In general the error grows when the skewing
+of the actor rectangle on screen increases.
+&lt;note&gt;&lt;para&gt;This function can be computationally intensive.&lt;/para&gt;&lt;/note&gt;
+&lt;note&gt;&lt;para&gt;This function only works when the allocation is up-to-date,
+i.e. inside of paint().&lt;/para&gt;&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if conversion was successful.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">x screen coordinate of the point to unproject</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">y screen coordinate of the point to unproject</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="x_out"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the unprojected x coordinance</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="y_out"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the unprojected y coordinance</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unmap" c:identifier="clutter_actor_unmap" version="1.0">
+        <doc xml:whitespace="preserve">Unsets the %CLUTTER_ACTOR_MAPPED flag on the actor and possibly
+unmaps its children if they were mapped.
+#ClutterActor &lt;function&gt;unmap()&lt;/function&gt; virtual function in an actor
+and you need to unmap the children of that actor. It is not necessary
+to call this if you implement #ClutterContainer because the default
+implementation will automatically unmap children of containers.
+When overriding unmap, it is mandatory to chain up to the parent
+implementation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unparent"
+              c:identifier="clutter_actor_unparent"
+              version="0.1.1">
+        <doc xml:whitespace="preserve">Removes the parent of @self.
+This function should not be used in applications.
+This function should only be called by implementations of the
+#ClutterContainer interface, or by composite actors that do
+not implicitly create their children.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unrealize" c:identifier="clutter_actor_unrealize">
+        <doc xml:whitespace="preserve">Unrealization informs the actor that it may be being destroyed or
+moved to another stage. The actor may want to destroy any
+underlying graphics resources at this point. However it is
+perfectly acceptable for it to retain the resources until the actor
+is destroyed because Clutter only ever uses a single rendering
+context and all of the graphics resources are valid on any stage.
+Because mapped actors must be realized, actors may not be
+unrealized if they are mapped. This function hides the actor to be
+sure it isn't mapped, an application-visible side effect that you
+may not be expecting.
+This function should not be called by application code.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unset_flags"
+              c:identifier="clutter_actor_unset_flags"
+              version="1.0">
+        <doc xml:whitespace="preserve">Unsets @flags on @self
+This function will emit notifications for the changed properties</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the flags to unset</doc>
+            <type name="ActorFlags" c:type="ClutterActorFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="actions"
+                version="1.4"
+                readable="0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Adds a #ClutterAction to the actor</doc>
+        <type name="Action"/>
+      </property>
+      <property name="allocation" version="0.8" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The allocation for the actor, in pixels
+This is property is read-only, but you might monitor it to know when an
+actor moves or resizes</doc>
+        <type name="ActorBox"/>
+      </property>
+      <property name="anchor-gravity"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The anchor point expressed as a #ClutterGravity</doc>
+        <type name="Gravity"/>
+      </property>
+      <property name="anchor-x"
+                version="0.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The X coordinate of an actor's anchor point, relative to
+the actor coordinate space, in pixels</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="anchor-y"
+                version="0.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The Y coordinate of an actor's anchor point, relative to
+the actor coordinate space, in pixels</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="clip" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The clip region for the actor, in actor-relative coordinates
+Every part of the actor outside the clip region will not be
+painted</doc>
+        <type name="Geometry"/>
+      </property>
+      <property name="clip-to-allocation"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the clip region should track the allocated area
+of the actor.
+This property is ignored if a clip area has been explicitly
+set using clutter_actor_set_clip().</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="constraints"
+                version="1.4"
+                readable="0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Adds a #ClutterConstraint to the actor</doc>
+        <type name="Constraint"/>
+      </property>
+      <property name="depth"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The position of the actor on the Z axis</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="effect"
+                version="1.4"
+                readable="0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Adds #ClutterEffect to the list of effects be applied on a #ClutterActor</doc>
+        <type name="Effect"/>
+      </property>
+      <property name="fixed-position-set"
+                version="0.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">This flag controls whether the #ClutterActor:fixed-x and
+#ClutterActor:fixed-y properties are used</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="fixed-x"
+                version="0.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The fixed X position of the actor in pixels.
+Writing this property sets #ClutterActor:fixed-position-set
+property as well, as a side effect</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="fixed-y"
+                version="0.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The fixed Y position of the actor in pixels.
+Writing this property sets the #ClutterActor:fixed-position-set
+property as well, as a side effect</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="has-clip" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the actor has the #ClutterActor:clip property set or not</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="has-pointer" version="1.2" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the actor contains the pointer of a #ClutterInputDevice
+or not.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="height" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Height of the actor (in pixels).  If written, forces the minimum and
+natural size request of the actor to the given height. If read, returns
+the allocated height if available, otherwise the height request.</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="mapped" version="1.0" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the actor is mapped (will be painted when the stage
+to which it belongs is mapped)</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="min-height"
+                version="0.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">A forced minimum height request for the actor, in pixels
+Writing this property sets the #ClutterActor:min-height-set property
+as well, as a side effect. This property overrides the usual height
+request of the actor.</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="min-height-set"
+                version="0.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">This flag controls whether the #ClutterActor:min-height property
+is used</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="min-width"
+                version="0.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">A forced minimum width request for the actor, in pixels
+Writing this property sets the #ClutterActor:min-width-set property
+as well, as a side effect.
+This property overrides the usual width request of the actor.</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="min-width-set"
+                version="0.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">This flag controls whether the #ClutterActor:min-width property
+is used</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="name"
+                version="0.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The name of the actor</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="natural-height"
+                version="0.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">A forced natural height request for the actor, in pixels
+Writing this property sets the #ClutterActor:natural-height-set
+property as well, as a side effect. This property overrides the
+usual height request of the actor</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="natural-height-set"
+                version="0.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">This flag controls whether the #ClutterActor:natural-height property
+is used</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="natural-width"
+                version="0.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">A forced natural width request for the actor, in pixels
+Writing this property sets the #ClutterActor:natural-width-set
+property as well, as a side effect. This property overrides the
+usual width request of the actor</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="natural-width-set"
+                version="0.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">This flag controls whether the #ClutterActor:natural-width property
+is used</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="opacity" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Opacity of an actor, between 0 (fully transparent) and
+255 (fully opaque)</doc>
+        <type name="guint"/>
+      </property>
+      <property name="reactive"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the actor is reactive to events or not
+Only reactive actors will emit event-related signals</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="realized" version="1.0" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the actor has been realized</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="request-mode"
+                version="0.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Request mode for the #ClutterActor. The request mode determines the
+type of geometry management used by the actor, either height for width
+(the default) or width for height.
+For actors implementing height for width, the parent container should get
+the preferred width first, and then the preferred height for that width.
+For actors implementing width for height, the parent container should get
+the preferred height first, and then the preferred width for that height.
+For instance:
+|[
+ClutterRequestMode mode;
+gfloat natural_width, min_width;
+gfloat natural_height, min_height;
+mode = clutter_actor_get_request_mode (child);
+if (mode == CLUTTER_REQUEST_HEIGHT_FOR_WIDTH)
+{
+clutter_actor_get_preferred_width (child, -1,
+&amp;amp;min_width,
+&amp;amp;natural_width);
+clutter_actor_get_preferred_height (child, natural_width,
+&amp;amp;min_height,
+&amp;amp;natural_height);
+}
+else
+{
+clutter_actor_get_preferred_height (child, -1,
+&amp;amp;min_height,
+&amp;amp;natural_height);
+clutter_actor_get_preferred_width (child, natural_height,
+&amp;amp;min_width,
+&amp;amp;natural_width);
+}
+]|
+will retrieve the minimum and natural width and height depending on the
+preferred request mode of the #ClutterActor "child".
+The clutter_actor_get_preferred_size() function will implement this
+check for you.</doc>
+        <type name="RequestMode"/>
+      </property>
+      <property name="rotation-angle-x"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The rotation angle on the X axis</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="rotation-angle-y"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The rotation angle on the Y axis</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="rotation-angle-z"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The rotation angle on the Z axis</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="rotation-center-x"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The rotation center on the X axis.</doc>
+        <type name="Vertex"/>
+      </property>
+      <property name="rotation-center-y"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The rotation center on the Y axis.</doc>
+        <type name="Vertex"/>
+      </property>
+      <property name="rotation-center-z"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The rotation center on the Z axis.</doc>
+        <type name="Vertex"/>
+      </property>
+      <property name="rotation-center-z-gravity"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The rotation center on the Z axis expressed as a #ClutterGravity.</doc>
+        <type name="Gravity"/>
+      </property>
+      <property name="scale-center-x"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The horizontal center point for scaling</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="scale-center-y"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The vertical center point for scaling</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="scale-gravity"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The center point for scaling expressed as a #ClutterGravity</doc>
+        <type name="Gravity"/>
+      </property>
+      <property name="scale-x"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The horizontal scale of the actor</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="scale-y"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The vertical scale of the actor</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="show-on-set-parent"
+                version="0.8"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If %TRUE, the actor is automatically shown when parented.
+Calling clutter_actor_hide() on an actor which has not been
+parented will set this property to %FALSE as a side effect.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="text-direction" writable="1" transfer-ownership="none">
+        <type name="TextDirection"/>
+      </property>
+      <property name="visible" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the actor is set to be visible or not
+See also #ClutterActor:mapped</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="width" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Width of the actor (in pixels). If written, forces the minimum and
+natural size request of the actor to the given width. If read, returns
+the allocated width if available, otherwise the width request.</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="x" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">X coordinate of the actor in pixels. If written, forces a fixed
+position for the actor. If read, returns the fixed position if any,
+otherwise the allocation if available, otherwise 0.</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="y" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Y coordinate of the actor in pixels. If written, forces a fixed
+position for the actor.  If read, returns the fixed position if
+any, otherwise the allocation if available, otherwise 0.</doc>
+        <type name="gfloat"/>
+      </property>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="GObject.InitiallyUnowned" c:type="GInitiallyUnowned"/>
+      </field>
+      <field name="flags">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="private_flags" readable="0" private="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="ActorPrivate" c:type="ClutterActorPrivate*"/>
+      </field>
+      <glib:signal name="allocation-changed" version="1.0">
+        <doc xml:whitespace="preserve">The ::allocation-changed signal is emitted when the
+#ClutterActor:allocation property changes. Usually, application
+code should just use the notifications for the :allocation property
+but if you want to track the allocation flags as well, for instance
+to know whether the absolute origin of @actor changed, then you might
+want use this signal instead.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="box" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActorBox with the new allocation</doc>
+            <type name="ActorBox"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#ClutterAllocationFlags for the allocation</doc>
+            <type name="AllocationFlags"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="button-press-event" version="0.6">
+        <doc xml:whitespace="preserve">The ::button-press-event signal is emitted each time a mouse button
+is pressed on @actor.
+or %FALSE to continue the emission.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the event has been handled by the actor,</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterButtonEvent</doc>
+            <type name="Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="button-release-event" version="0.6">
+        <doc xml:whitespace="preserve">The ::button-release-event signal is emitted each time a mouse button
+is released on @actor.
+or %FALSE to continue the emission.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the event has been handled by the actor,</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterButtonEvent</doc>
+            <type name="Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="captured-event" version="0.6">
+        <doc xml:whitespace="preserve">The ::captured-event signal is emitted when an event is captured
+by Clutter. This signal will be emitted starting from the top-level
+container (the #ClutterStage) to the actor which received the event
+going down the hierarchy. This signal can be used to intercept every
+event before the specialized events (like
+ClutterActor::button-press-event or ::key-released-event) are
+emitted.
+or %FALSE to continue the emission.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the event has been handled by the actor,</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterEvent</doc>
+            <type name="Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="destroy" version="0.2">
+        <doc xml:whitespace="preserve">The ::destroy signal notifies that all references held on the
+actor which emitted it should be released.
+The ::destroy signal should be used by all holders of a reference
+on @actor.
+This signal might result in the finalization of the #ClutterActor
+if all references are released.
+Composite actors and actors implementing the #ClutterContainer
+interface should override the default implementation of the
+class handler of this signal and call clutter_actor_destroy() on
+their children. When overriding the default class handler, it is
+required to chain up to the parent's implementation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="enter-event" version="0.6">
+        <doc xml:whitespace="preserve">The ::enter-event signal is emitted when the pointer enters the @actor
+or %FALSE to continue the emission.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the event has been handled by the actor,</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterCrossingEvent</doc>
+            <type name="Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="event" version="0.6">
+        <doc xml:whitespace="preserve">The ::event signal is emitted each time an event is received
+by the @actor. This signal will be emitted on every actor,
+following the hierarchy chain, until it reaches the top-level
+container (the #ClutterStage).
+or %FALSE to continue the emission.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the event has been handled by the actor,</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterEvent</doc>
+            <type name="Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="hide" version="0.2">
+        <doc xml:whitespace="preserve">The ::hide signal is emitted when an actor is no longer rendered
+on the stage.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="key-focus-in" version="0.6">
+        <doc xml:whitespace="preserve">The ::key-focus-in signal is emitted when @actor receives key focus.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="key-focus-out" version="0.6">
+        <doc xml:whitespace="preserve">The ::key-focus-out signal is emitted when @actor loses key focus.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="key-press-event" version="0.6">
+        <doc xml:whitespace="preserve">The ::key-press-event signal is emitted each time a keyboard button
+is pressed while @actor has key focus (see clutter_stage_set_key_focus()).
+or %FALSE to continue the emission.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the event has been handled by the actor,</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterKeyEvent</doc>
+            <type name="Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="key-release-event" version="0.6">
+        <doc xml:whitespace="preserve">The ::key-release-event signal is emitted each time a keyboard button
+is released while @actor has key focus (see
+clutter_stage_set_key_focus()).
+or %FALSE to continue the emission.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the event has been handled by the actor,</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterKeyEvent</doc>
+            <type name="Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="leave-event" version="0.6">
+        <doc xml:whitespace="preserve">The ::leave-event signal is emitted when the pointer leaves the @actor.
+or %FALSE to continue the emission.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the event has been handled by the actor,</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterCrossingEvent</doc>
+            <type name="Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="motion-event" version="0.6">
+        <doc xml:whitespace="preserve">The ::motion-event signal is emitted each time the mouse pointer is
+moved over @actor.
+or %FALSE to continue the emission.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the event has been handled by the actor,</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterMotionEvent</doc>
+            <type name="Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="paint" version="0.8">
+        <doc xml:whitespace="preserve">The ::paint signal is emitted each time an actor is being painted.
+Subclasses of #ClutterActor should override the class signal handler
+and paint themselves in that function.
+It is possible to connect a handler to the ::paint signal in order
+to set up some custom aspect of a paint.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="parent-set" version="0.2">
+        <doc xml:whitespace="preserve">This signal is emitted when the parent of the actor changes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="old_parent" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the previous parent of the actor, or %NULL</doc>
+            <type name="Actor"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="pick" version="1.0">
+        <doc xml:whitespace="preserve">The ::pick signal is emitted each time an actor is being painted
+in "pick mode". The pick mode is used to identify the actor during
+the event handling phase, or by clutter_stage_get_actor_at_pos().
+The actor should paint its shape using the passed @pick_color.
+Subclasses of #ClutterActor should override the class signal handler
+and paint themselves in that function.
+It is possible to connect a handler to the ::pick signal in order
+to set up some custom aspect of a paint in pick mode.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterColor to be used when picking</doc>
+            <type name="Color"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="queue-redraw" version="1.0">
+        <doc xml:whitespace="preserve">The ::queue_redraw signal is emitted when clutter_actor_queue_redraw()
+is called on @origin.
+The default implementation for #ClutterActor chains up to the
+parent actor and queues a redraw on the parent, thus "bubbling"
+the redraw queue up through the actor graph. The default
+implementation for #ClutterStage queues a clutter_redraw() in a
+main loop idle handler.
+Note that the @origin actor may be the stage, or a container; it
+does not have to be a leaf node in the actor graph.
+Toolkits embedding a #ClutterStage which require a redraw and
+relayout cycle can stop the emission of this signal using the
+GSignal API, redraw the UI and then call clutter_redraw()
+themselves, like:
+|[
+static void
+on_redraw_complete (void)
+{
+/&amp;ast; execute the Clutter drawing pipeline &amp;ast;/
+clutter_redraw ();
+}
+static void
+on_stage_queue_redraw (ClutterStage *stage)
+{
+/&amp;ast; this prevents the default handler to run &amp;ast;/
+g_signal_stop_emission_by_name (stage, "queue-redraw");
+/&amp;ast; queue a redraw with the host toolkit and call
+&amp;ast; a function when the redraw has been completed
+&amp;ast;/
+queue_a_redraw (G_CALLBACK (on_redraw_complete));
+}
+]|
+&lt;note&gt;&lt;para&gt;This signal is emitted before the Clutter paint
+pipeline is executed. If you want to know when the pipeline has
+been completed you should connect to the ::paint signal on the
+Stage with g_signal_connect_after().&lt;/para&gt;&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="origin" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the actor which initiated the redraw request</doc>
+            <type name="Actor"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="queue-relayout" version="1.2">
+        <doc xml:whitespace="preserve">The ::queue_layout signal is emitted when clutter_actor_queue_relayout()
+is called on an actor.
+The default implementation for #ClutterActor chains up to the
+parent actor and queues a relayout on the parent, thus "bubbling"
+the relayout queue up through the actor graph.
+The main purpose of this signal is to allow relayout to be propagated
+properly in the procense of #ClutterClone actors. Applications will
+not normally need to connect to this signal.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="realize" version="0.8">
+        <doc xml:whitespace="preserve">The ::realize signal is emitted each time an actor is being
+realized.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="scroll-event" version="0.6">
+        <doc xml:whitespace="preserve">The ::scroll-event signal is emitted each time the mouse is
+scrolled on @actor
+or %FALSE to continue the emission.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the event has been handled by the actor,</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterScrollEvent</doc>
+            <type name="Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="show" version="0.2">
+        <doc xml:whitespace="preserve">The ::show signal is emitted when an actor is visible and
+rendered on the stage.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="unrealize" version="0.8">
+        <doc xml:whitespace="preserve">The ::unrealize signal is emitted each time an actor is being
+unrealized.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="ActorBox"
+            c:type="ClutterActorBox"
+            glib:type-name="ClutterActorBox"
+            glib:get-type="clutter_actor_box_get_type"
+            c:symbol-prefix="actor_box">
+      <doc xml:whitespace="preserve">Bounding box of an actor. The coordinates of the top left and right bottom
+corners of an actor. The coordinates of the two points are expressed in
+pixels with sub-pixel precision</doc>
+      <field name="x1" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="y1" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="x2" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="y2" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="clutter_actor_box_new"
+                   version="1.0">
+        <doc xml:whitespace="preserve">Allocates a new #ClutterActorBox using the passed coordinates
+for the top left and bottom right points
+clutter_actor_box_free() to free the resources</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly allocated #ClutterActorBox. Use</doc>
+          <type name="ActorBox" c:type="ClutterActorBox*"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate of the top left point</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="y_1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate of the top left point</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="x_2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate of the bottom right point</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="y_2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate of the bottom right point</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="clamp_to_pixel"
+              c:identifier="clutter_actor_box_clamp_to_pixel"
+              version="1.2">
+        <doc xml:whitespace="preserve">Clamps the components of @box to the nearest integer</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="contains"
+              c:identifier="clutter_actor_box_contains"
+              version="1.0">
+        <doc xml:whitespace="preserve">Checks whether a point with @x, @y coordinates is contained
+withing @box</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the point is contained by the #ClutterActorBox</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate of the point</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate of the point</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy" c:identifier="clutter_actor_box_copy" version="1.0">
+        <doc xml:whitespace="preserve">Copies @box
+clutter_actor_box_free() to free the allocated resources</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated copy of #ClutterActorBox. Use</doc>
+          <type name="ActorBox" c:type="ClutterActorBox*"/>
+        </return-value>
+      </method>
+      <method name="equal"
+              c:identifier="clutter_actor_box_equal"
+              version="1.0">
+        <doc xml:whitespace="preserve">Checks @box_a and @box_b for equality</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the passed #ClutterActorBox are equal</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="box_b" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActorBox</doc>
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free" c:identifier="clutter_actor_box_free" version="1.0">
+        <doc xml:whitespace="preserve">Frees a #ClutterActorBox allocated using clutter_actor_box_new()
+or clutter_actor_box_copy()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="from_vertices"
+              c:identifier="clutter_actor_box_from_vertices"
+              version="1.0">
+        <doc xml:whitespace="preserve">Calculates the bounding box represented by the four vertices; for details
+of the vertex array see clutter_actor_get_abs_allocation_vertices().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="verts" transfer-ownership="none">
+            <doc xml:whitespace="preserve">array of four #ClutterVertex</doc>
+            <array c:type="ClutterVertex" fixed-size="4">
+              <type name="Vertex" c:type="ClutterVertex"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_area"
+              c:identifier="clutter_actor_box_get_area"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the area of @box</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the area of a #ClutterActorBox, in pixels</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_height"
+              c:identifier="clutter_actor_box_get_height"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the height of the @box</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the height of the box</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_origin"
+              c:identifier="clutter_actor_box_get_origin"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the origin of @box</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the X coordinate, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the Y coordinate, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_size"
+              c:identifier="clutter_actor_box_get_size"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the size of @box</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the width, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the height, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_width"
+              c:identifier="clutter_actor_box_get_width"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the width of the @box</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the width of the box</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_x"
+              c:identifier="clutter_actor_box_get_x"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the X coordinate of the origin of @box</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the X coordinate of the origin</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_y"
+              c:identifier="clutter_actor_box_get_y"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the Y coordinate of the origin of @box</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the Y coordinate of the origin</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="interpolate"
+              c:identifier="clutter_actor_box_interpolate"
+              version="1.2">
+        <doc xml:whitespace="preserve">Interpolates between @initial and @final #ClutterActorBox&lt;!-- --&gt;es
+using @progress</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="final" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the final #ClutterActorBox</doc>
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+          <parameter name="progress" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the interpolation progress</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="result"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the interpolation</doc>
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_origin"
+              c:identifier="clutter_actor_box_set_origin"
+              version="1.6">
+        <doc xml:whitespace="preserve">Changes the origin of @box, maintaining the size of the #ClutterActorBox.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the X coordinate of the new origin</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the Y coordinate of the new origin</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_size"
+              c:identifier="clutter_actor_box_set_size"
+              version="1.6">
+        <doc xml:whitespace="preserve">Sets the size of @box, maintaining the origin of the #ClutterActorBox.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new width</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new height</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="union"
+              c:identifier="clutter_actor_box_union"
+              version="1.4">
+        <doc xml:whitespace="preserve">Unions the two boxes @a and @b and stores the result in @result.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="b" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the second #ClutterActorBox</doc>
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+          <parameter name="result"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterActorBox representing a union of @a and @b</doc>
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="ActorClass"
+            c:type="ClutterActorClass"
+            glib:is-gtype-struct-for="Actor">
+      <doc xml:whitespace="preserve">Base class for actors.</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="GObject.InitiallyUnownedClass"
+              c:type="GInitiallyUnownedClass"/>
+      </field>
+      <field name="show">
+        <callback name="show">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="show_all">
+        <callback name="show_all">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="hide">
+        <callback name="hide">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="hide_all">
+        <callback name="hide_all">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="realize">
+        <callback name="realize">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unrealize">
+        <callback name="unrealize">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="map">
+        <callback name="map">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unmap">
+        <callback name="unmap">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="paint">
+        <callback name="paint">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="parent_set">
+        <callback name="parent_set">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="old_parent" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="destroy">
+        <callback name="destroy">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pick">
+        <callback name="pick">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="color" transfer-ownership="none">
+              <type name="Color" c:type="ClutterColor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="queue_redraw">
+        <callback name="queue_redraw">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="leaf_that_queued" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_preferred_width">
+        <callback name="get_preferred_width">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="for_height" transfer-ownership="none">
+              <doc xml:whitespace="preserve">available height when computing the preferred width, or a negative value to indicate that no height is defined</doc>
+              <type name="gfloat" c:type="gfloat"/>
+            </parameter>
+            <parameter name="min_width_p"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">return location for minimum width, or %NULL</doc>
+              <type name="gfloat" c:type="gfloat*"/>
+            </parameter>
+            <parameter name="natural_width_p"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">return location for the natural width, or %NULL</doc>
+              <type name="gfloat" c:type="gfloat*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_preferred_height">
+        <callback name="get_preferred_height">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="for_width" transfer-ownership="none">
+              <doc xml:whitespace="preserve">available width to assume in computing desired height, or a negative value to indicate that no width is defined</doc>
+              <type name="gfloat" c:type="gfloat"/>
+            </parameter>
+            <parameter name="min_height_p"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">return location for minimum height, or %NULL</doc>
+              <type name="gfloat" c:type="gfloat*"/>
+            </parameter>
+            <parameter name="natural_height_p"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">return location for natural height, or %NULL</doc>
+              <type name="gfloat" c:type="gfloat*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="allocate">
+        <callback name="allocate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="box" transfer-ownership="none">
+              <doc xml:whitespace="preserve">new allocation of the actor, in parent-relative coordinates</doc>
+              <type name="ActorBox" c:type="ClutterActorBox*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">flags that control the allocation</doc>
+              <type name="AllocationFlags" c:type="ClutterAllocationFlags"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="apply_transform">
+        <callback name="apply_transform">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="matrix" transfer-ownership="none">
+              <type name="Cogl.Matrix" c:type="CoglMatrix*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="event">
+        <callback name="event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Event" c:type="ClutterEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="button_press_event">
+        <callback name="button_press_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="ButtonEvent" c:type="ClutterButtonEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="button_release_event">
+        <callback name="button_release_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="ButtonEvent" c:type="ClutterButtonEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="scroll_event">
+        <callback name="scroll_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="ScrollEvent" c:type="ClutterScrollEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="key_press_event">
+        <callback name="key_press_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="KeyEvent" c:type="ClutterKeyEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="key_release_event">
+        <callback name="key_release_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="KeyEvent" c:type="ClutterKeyEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="motion_event">
+        <callback name="motion_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="MotionEvent" c:type="ClutterMotionEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="enter_event">
+        <callback name="enter_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="CrossingEvent" c:type="ClutterCrossingEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="leave_event">
+        <callback name="leave_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="CrossingEvent" c:type="ClutterCrossingEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="captured_event">
+        <callback name="captured_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Event" c:type="ClutterEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="key_focus_in">
+        <callback name="key_focus_in">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="key_focus_out">
+        <callback name="key_focus_out">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="queue_relayout">
+        <callback name="queue_relayout">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_accessible">
+        <callback name="get_accessible">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #AtkObject associated with @actor</doc>
+            <type name="Atk.Object" c:type="AtkObject*"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_paint_volume">
+        <callback name="get_paint_volume">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="volume" transfer-ownership="none">
+              <type name="PaintVolume" c:type="ClutterPaintVolume*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_padding_dummy" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="29">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="ActorFlags"
+              glib:type-name="ClutterActorFlags"
+              glib:get-type="clutter_actor_flags_get_type"
+              c:type="ClutterActorFlags">
+      <doc xml:whitespace="preserve">Flags used to signal the state of an actor.</doc>
+      <member name="mapped"
+              value="2"
+              c:identifier="CLUTTER_ACTOR_MAPPED"
+              glib:nick="mapped"/>
+      <member name="realized"
+              value="4"
+              c:identifier="CLUTTER_ACTOR_REALIZED"
+              glib:nick="realized"/>
+      <member name="reactive"
+              value="8"
+              c:identifier="CLUTTER_ACTOR_REACTIVE"
+              glib:nick="reactive"/>
+      <member name="visible"
+              value="16"
+              c:identifier="CLUTTER_ACTOR_VISIBLE"
+              glib:nick="visible"/>
+      <member name="no_layout"
+              value="32"
+              c:identifier="CLUTTER_ACTOR_NO_LAYOUT"
+              glib:nick="no-layout"/>
+    </bitfield>
+    <class name="ActorMeta"
+           c:symbol-prefix="actor_meta"
+           c:type="ClutterActorMeta"
+           version="1.4"
+           parent="GObject.InitiallyUnowned"
+           abstract="1"
+           glib:type-name="ClutterActorMeta"
+           glib:get-type="clutter_actor_meta_get_type"
+           glib:type-struct="ActorMetaClass">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;ClutterActorMeta&lt;/structname&gt; structure contains only
+private data and should be accessed using the provided API</doc>
+      <virtual-method name="set_actor">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_actor"
+              c:identifier="clutter_actor_meta_get_actor"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves a pointer to the #ClutterActor that owns @meta</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to a #ClutterActor or %NULL</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="get_enabled"
+              c:identifier="clutter_actor_meta_get_enabled"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves whether @meta is enabled</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #ClutterActorMeta instance is enabled</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_name"
+              c:identifier="clutter_actor_meta_get_name"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the name set using clutter_actor_meta_set_name()
+instance, or %NULL if none was set. The returned string is owned
+by the #ClutterActorMeta instance and it should not be modified
+or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the #ClutterActorMeta</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_enabled"
+              c:identifier="clutter_actor_meta_set_enabled"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets whether @meta should be enabled or not</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="is_enabled" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether @meta is enabled</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_name"
+              c:identifier="clutter_actor_meta_set_name"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the name of @meta
+The name can be used to identify the #ClutterActorMeta instance</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of @meta</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="actor" version="1.4" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #ClutterActor attached to the #ClutterActorMeta instance</doc>
+        <type name="Actor"/>
+      </property>
+      <property name="enabled"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether or not the #ClutterActorMeta is enabled</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="name"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The unique name to access the #ClutterActorMeta</doc>
+        <type name="utf8"/>
+      </property>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="GObject.InitiallyUnowned" c:type="GInitiallyUnowned"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="ActorMetaPrivate" c:type="ClutterActorMetaPrivate*"/>
+      </field>
+    </class>
+    <record name="ActorMetaClass"
+            c:type="ClutterActorMetaClass"
+            glib:is-gtype-struct-for="ActorMeta"
+            version="1.4">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;ClutterActorMetaClass&lt;/structname&gt; structure contains
+only private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="GObject.InitiallyUnownedClass"
+              c:type="GInitiallyUnownedClass"/>
+      </field>
+      <field name="set_actor">
+        <callback name="set_actor">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="meta" transfer-ownership="none">
+              <type name="ActorMeta" c:type="ClutterActorMeta*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_meta1" introspectable="0">
+        <callback name="_clutter_meta1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_meta2" introspectable="0">
+        <callback name="_clutter_meta2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_meta3" introspectable="0">
+        <callback name="_clutter_meta3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_meta4" introspectable="0">
+        <callback name="_clutter_meta4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_meta5" introspectable="0">
+        <callback name="_clutter_meta5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_meta6" introspectable="0">
+        <callback name="_clutter_meta6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_meta7" introspectable="0">
+        <callback name="_clutter_meta7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ActorMetaPrivate"
+            c:type="ClutterActorMetaPrivate"
+            disguised="1">
+    </record>
+    <record name="ActorPrivate" c:type="ClutterActorPrivate" disguised="1">
+    </record>
+    <constant name="AddFavorite" value="269025081">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Adiaeresis" value="196">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Agrave" value="192">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ahook" value="16785058">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <enumeration name="AlignAxis"
+                 version="1.4"
+                 glib:type-name="ClutterAlignAxis"
+                 glib:get-type="clutter_align_axis_get_type"
+                 c:type="ClutterAlignAxis">
+      <doc xml:whitespace="preserve">Specifies the axis on which #ClutterAlignConstraint should maintain
+the alignment</doc>
+      <member name="x_axis"
+              value="0"
+              c:identifier="CLUTTER_ALIGN_X_AXIS"
+              glib:nick="x-axis"/>
+      <member name="y_axis"
+              value="1"
+              c:identifier="CLUTTER_ALIGN_Y_AXIS"
+              glib:nick="y-axis"/>
+    </enumeration>
+    <class name="AlignConstraint"
+           c:symbol-prefix="align_constraint"
+           c:type="ClutterAlignConstraint"
+           version="1.4"
+           parent="Constraint"
+           glib:type-name="ClutterAlignConstraint"
+           glib:get-type="clutter_align_constraint_get_type"
+           glib:type-struct="AlignConstraintClass">
+      <doc xml:whitespace="preserve">&lt;structname&gt;ClutterAlignConstraint&lt;/structname&gt; is an opaque structure
+whose members cannot be directly accesses</doc>
+      <constructor name="new"
+                   c:identifier="clutter_align_constraint_new"
+                   version="1.4">
+        <doc xml:whitespace="preserve">Creates a new constraint, aligning a #ClutterActor's position with
+regards of the size of the actor to @source, with the given
+alignment @factor</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterAlignConstraint</doc>
+          <type name="Constraint" c:type="ClutterConstraint*"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the #ClutterActor to use as the source of the alignment, or %NULL</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="axis" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the axis to be used to compute the alignment</doc>
+            <type name="AlignAxis" c:type="ClutterAlignAxis"/>
+          </parameter>
+          <parameter name="factor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the alignment factor, between 0.0 and 1.0</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_align_axis"
+              c:identifier="clutter_align_constraint_get_align_axis"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the value set using clutter_align_constraint_set_align_axis()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the alignment axis</doc>
+          <type name="AlignAxis" c:type="ClutterAlignAxis"/>
+        </return-value>
+      </method>
+      <method name="get_factor"
+              c:identifier="clutter_align_constraint_get_factor"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the factor set using clutter_align_constraint_set_factor()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the alignment factor</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_source"
+              c:identifier="clutter_align_constraint_get_source"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the source of the alignment
+of the alignment</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #ClutterActor used as the source</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="set_align_axis"
+              c:identifier="clutter_align_constraint_set_align_axis"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the axis to which the alignment refers to</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="axis" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the axis to which the alignment refers to</doc>
+            <type name="AlignAxis" c:type="ClutterAlignAxis"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_factor"
+              c:identifier="clutter_align_constraint_set_factor"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the alignment factor of the constraint
+The factor depends on the #ClutterAlignConstraint:align-axis property
+and it is a value between 0.0 (meaning left, when
+#ClutterAlignConstraint:align-axis is set to %CLUTTER_ALIGN_X_AXIS; or
+meaning top, when #ClutterAlignConstraint:align-axis is set to
+%CLUTTER_ALIGN_Y_AXIS) and 1.0 (meaning right, when
+#ClutterAlignConstraint:align-axis is set to %CLUTTER_ALIGN_X_AXIS; or
+meaning bottom, when #ClutterAlignConstraint:align-axis is set to
+%CLUTTER_ALIGN_Y_AXIS). A value of 0.5 aligns in the middle in either
+cases</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="factor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the alignment factor, between 0.0 and 1.0</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_source"
+              c:identifier="clutter_align_constraint_set_source"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the source of the alignment constraint</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterActor, or %NULL to unset the source</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="align-axis"
+                version="1.4"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The axis to be used to compute the alignment</doc>
+        <type name="AlignAxis"/>
+      </property>
+      <property name="factor"
+                version="1.4"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The alignment factor, as a normalized value between 0.0 and 1.0
+The factor depends on the #ClutterAlignConstraint:align-axis property:
+with an align-axis value of %CLUTTER_ALIGN_X_AXIS, 0.0 means left and
+1.0 means right; with a value of %CLUTTER_ALIGN_Y_AXIS, 0.0 means top
+and 1.0 means bottom.</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="source"
+                version="1.4"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #ClutterActor used as the source for the alignment</doc>
+        <type name="Actor"/>
+      </property>
+    </class>
+    <record name="AlignConstraintClass"
+            c:type="ClutterAlignConstraintClass"
+            disguised="1"
+            glib:is-gtype-struct-for="AlignConstraint">
+    </record>
+    <bitfield name="AllocationFlags"
+              version="1.0"
+              glib:type-name="ClutterAllocationFlags"
+              glib:get-type="clutter_allocation_flags_get_type"
+              c:type="ClutterAllocationFlags">
+      <doc xml:whitespace="preserve">Flags passed to the #ClutterActor::allocate() virtual function and
+to the clutter_actor_allocate() function</doc>
+      <member name="allocation_none"
+              value="0"
+              c:identifier="CLUTTER_ALLOCATION_NONE"
+              glib:nick="allocation-none"/>
+      <member name="absolute_origin_changed"
+              value="2"
+              c:identifier="CLUTTER_ABSOLUTE_ORIGIN_CHANGED"
+              glib:nick="absolute-origin-changed"/>
+    </bitfield>
+    <class name="Alpha"
+           c:symbol-prefix="alpha"
+           c:type="ClutterAlpha"
+           version="0.2"
+           parent="GObject.InitiallyUnowned"
+           glib:type-name="ClutterAlpha"
+           glib:get-type="clutter_alpha_get_type"
+           glib:type-struct="AlphaClass">
+      <doc xml:whitespace="preserve">#ClutterAlpha combines a #ClutterTimeline and a function.
+The contents of the #ClutterAlpha structure are private and should
+only be accessed using the provided API.</doc>
+      <implements name="Scriptable"/>
+      <constructor name="new" c:identifier="clutter_alpha_new" version="0.2">
+        <doc xml:whitespace="preserve">Creates a new #ClutterAlpha instance.  You must set a function
+to compute the alpha value using clutter_alpha_set_func() and
+bind a #ClutterTimeline object to the #ClutterAlpha instance
+using clutter_alpha_set_timeline().
+You should use the newly created #ClutterAlpha instance inside
+a #ClutterBehaviour object.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created empty #ClutterAlpha instance.</doc>
+          <type name="Alpha" c:type="ClutterAlpha*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_full"
+                   c:identifier="clutter_alpha_new_full"
+                   version="1.0">
+        <doc xml:whitespace="preserve">Creates a new #ClutterAlpha instance and sets the timeline
+and animation mode.
+See also clutter_alpha_set_timeline() and clutter_alpha_set_mode().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterAlpha</doc>
+          <type name="Alpha" c:type="ClutterAlpha*"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeline" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#ClutterTimeline timeline</doc>
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">animation mode</doc>
+            <type name="gulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_func"
+                   c:identifier="clutter_alpha_new_with_func"
+                   version="1.0">
+        <doc xml:whitespace="preserve">Creates a new #ClutterAlpha instances and sets the timeline
+and the alpha function.
+This function will not register @func as a global alpha function.
+See also clutter_alpha_set_timeline() and clutter_alpha_set_func().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterAlpha</doc>
+          <type name="Alpha" c:type="ClutterAlpha*"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeline" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterTimeline</doc>
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <doc xml:whitespace="preserve">a #ClutterAlphaFunc</doc>
+            <type name="AlphaFunc" c:type="ClutterAlphaFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to pass to the function, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">function to call when removing the alpha function, or %NULL</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="register_closure"
+                c:identifier="clutter_alpha_register_closure"
+                shadows="register_func"
+                version="1.0">
+        <doc xml:whitespace="preserve">#GClosure variant of clutter_alpha_register_func().
+Registers a global alpha function and returns its logical id
+to be used by clutter_alpha_set_mode() or by #ClutterAnimation.
+The logical id is always greater than %CLUTTER_ANIMATION_LAST.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the logical id of the alpha function</doc>
+          <type name="gulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="closure" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GClosure</doc>
+            <type name="GObject.Closure" c:type="GClosure*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="register_func"
+                c:identifier="clutter_alpha_register_func"
+                shadowed-by="register_closure"
+                version="1.0"
+                introspectable="0">
+        <doc xml:whitespace="preserve">Registers a global alpha function and returns its logical id
+to be used by clutter_alpha_set_mode() or by #ClutterAnimation.
+The logical id is always greater than %CLUTTER_ANIMATION_LAST.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the logical id of the alpha function</doc>
+          <type name="gulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none" closure="1">
+            <doc xml:whitespace="preserve">a #ClutterAlphaFunc</doc>
+            <type name="AlphaFunc" c:type="ClutterAlphaFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data to pass to @func, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_alpha"
+              c:identifier="clutter_alpha_get_alpha"
+              version="0.2">
+        <doc xml:whitespace="preserve">Query the current alpha value.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The current alpha value for the alpha</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_mode"
+              c:identifier="clutter_alpha_get_mode"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterAnimationMode used by @alpha.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the animation mode</doc>
+          <type name="gulong" c:type="gulong"/>
+        </return-value>
+      </method>
+      <method name="get_timeline"
+              c:identifier="clutter_alpha_get_timeline"
+              version="0.2">
+        <doc xml:whitespace="preserve">Gets the #ClutterTimeline bound to @alpha.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterTimeline instance</doc>
+          <type name="Timeline" c:type="ClutterTimeline*"/>
+        </return-value>
+      </method>
+      <method name="set_closure"
+              c:identifier="clutter_alpha_set_closure"
+              version="0.8">
+        <doc xml:whitespace="preserve">Sets the #GClosure used to compute the alpha value at each
+frame of the #ClutterTimeline bound to @alpha.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="closure" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GClosure</doc>
+            <type name="GObject.Closure" c:type="GClosure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_func"
+              c:identifier="clutter_alpha_set_func"
+              version="0.2">
+        <doc xml:whitespace="preserve">Sets the #ClutterAlphaFunc function used to compute
+the alpha value at each frame of the #ClutterTimeline
+bound to @alpha.
+This function will not register @func as a global alpha function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="1"
+                     destroy="2">
+            <doc xml:whitespace="preserve">A #ClutterAlphaFunc</doc>
+            <type name="AlphaFunc" c:type="ClutterAlphaFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data to be passed to the alpha function, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">notify function used when disposing the alpha function</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_mode"
+              c:identifier="clutter_alpha_set_mode"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the progress function of @alpha using the symbolic value
+of @mode, as taken by the #ClutterAnimationMode enumeration or
+using the value returned by clutter_alpha_register_func().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterAnimationMode</doc>
+            <type name="gulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_timeline"
+              c:identifier="clutter_alpha_set_timeline"
+              version="0.2">
+        <doc xml:whitespace="preserve">Binds @alpha to @timeline.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeline" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #ClutterTimeline</doc>
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="alpha" version="0.2" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The alpha value as computed by the alpha function. The linear
+interval is 0.0 to 1.0, but the Alpha allows overshooting by
+one unit in each direction, so the valid interval is -1.0 to 2.0.</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="mode"
+                version="1.0"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The progress function logical id - either a value from the
+#ClutterAnimationMode enumeration or a value returned by
+clutter_alpha_register_func().
+If %CLUTTER_CUSTOM_MODE is used then the function set using
+clutter_alpha_set_closure() or clutter_alpha_set_func()
+will be used.</doc>
+        <type name="gulong"/>
+      </property>
+      <property name="timeline"
+                version="0.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">A #ClutterTimeline instance used to drive the alpha function.</doc>
+        <type name="Timeline"/>
+      </property>
+      <field name="parent" readable="0" private="1">
+        <type name="GObject.InitiallyUnowned" c:type="GInitiallyUnowned"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="AlphaPrivate" c:type="ClutterAlphaPrivate*"/>
+      </field>
+    </class>
+    <record name="AlphaClass"
+            c:type="ClutterAlphaClass"
+            glib:is-gtype-struct-for="Alpha"
+            version="0.2">
+      <doc xml:whitespace="preserve">Base class for #ClutterAlpha</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="GObject.InitiallyUnownedClass"
+              c:type="GInitiallyUnownedClass"/>
+      </field>
+      <field name="_clutter_alpha_1" introspectable="0">
+        <callback name="_clutter_alpha_1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_alpha_2" introspectable="0">
+        <callback name="_clutter_alpha_2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_alpha_3" introspectable="0">
+        <callback name="_clutter_alpha_3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_alpha_4" introspectable="0">
+        <callback name="_clutter_alpha_4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_alpha_5" introspectable="0">
+        <callback name="_clutter_alpha_5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <callback name="AlphaFunc" c:type="ClutterAlphaFunc" version="0.2">
+      <doc xml:whitespace="preserve">A function returning a value depending on the position of
+the #ClutterTimeline bound to @alpha.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a floating point value</doc>
+        <type name="gdouble" c:type="gdouble"/>
+      </return-value>
+      <parameters>
+        <parameter name="alpha" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterAlpha</doc>
+          <type name="Alpha" c:type="ClutterAlpha*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <doc xml:whitespace="preserve">user data passed to the function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="AlphaPrivate" c:type="ClutterAlphaPrivate" disguised="1">
+    </record>
+    <constant name="Alt_L" value="65513">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Alt_R" value="65514">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Amacron" value="960">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <interface name="Animatable"
+               c:symbol-prefix="animatable"
+               c:type="ClutterAnimatable"
+               version="1.0"
+               glib:type-name="ClutterAnimatable"
+               glib:get-type="clutter_animatable_get_type"
+               glib:type-struct="AnimatableIface">
+      <doc xml:whitespace="preserve">#ClutterAnimatable is an opaque structure whose members cannot be directly
+accessed</doc>
+      <virtual-method name="animate_property"
+                      invoker="animate_property"
+                      version="1.0">
+        <doc xml:whitespace="preserve">Calls the animate_property() virtual function for @animatable.
+The @initial_value and @final_value #GValue&lt;!-- --&gt;s must contain
+the same type; @value must have been initialized to the same
+type of @initial_value and @final_value.
+All implementation of the #ClutterAnimatable interface must
+implement this function.
+be applied to the #ClutterAnimatable, and %FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value has been validated and can</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="animation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterAnimation</doc>
+            <type name="Animation" c:type="ClutterAnimation*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the animated property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="initial_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the initial value of the animation interval</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="final_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the final value of the animation interval</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="progress" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the progress factor</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the animation value</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="find_property"
+                      invoker="find_property"
+                      version="1.4">
+        <doc xml:whitespace="preserve">Finds the #GParamSpec for @property_name
+or %NULL</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GParamSpec for the given property</doc>
+          <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the animatable property to find</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_initial_state"
+                      invoker="get_initial_state"
+                      version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the current state of @property_name and sets @value with it</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the animatable property to retrieve</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue initialized to the type of the property to retrieve</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_final_state"
+                      invoker="set_final_state"
+                      version="1.4">
+        <doc xml:whitespace="preserve">Sets the current state of @property_name to @value</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the animatable property to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the animatable property to set</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="animate_property"
+              c:identifier="clutter_animatable_animate_property"
+              version="1.0">
+        <doc xml:whitespace="preserve">Calls the animate_property() virtual function for @animatable.
+The @initial_value and @final_value #GValue&lt;!-- --&gt;s must contain
+the same type; @value must have been initialized to the same
+type of @initial_value and @final_value.
+All implementation of the #ClutterAnimatable interface must
+implement this function.
+be applied to the #ClutterAnimatable, and %FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value has been validated and can</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="animation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterAnimation</doc>
+            <type name="Animation" c:type="ClutterAnimation*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the animated property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="initial_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the initial value of the animation interval</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="final_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the final value of the animation interval</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="progress" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the progress factor</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the animation value</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_property"
+              c:identifier="clutter_animatable_find_property"
+              version="1.4">
+        <doc xml:whitespace="preserve">Finds the #GParamSpec for @property_name
+or %NULL</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GParamSpec for the given property</doc>
+          <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the animatable property to find</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_initial_state"
+              c:identifier="clutter_animatable_get_initial_state"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the current state of @property_name and sets @value with it</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the animatable property to retrieve</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue initialized to the type of the property to retrieve</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_final_state"
+              c:identifier="clutter_animatable_set_final_state"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the current state of @property_name to @value</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the animatable property to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the animatable property to set</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="AnimatableIface"
+            c:type="ClutterAnimatableIface"
+            glib:is-gtype-struct-for="Animatable"
+            version="1.0">
+      <doc xml:whitespace="preserve">Base interface for #GObject&lt;!-- --&gt;s that can be animated by a
+a #ClutterAnimation.</doc>
+      <field name="parent_iface" readable="0" private="1">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="animate_property">
+        <callback name="animate_property">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the value has been validated and can</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="animatable" transfer-ownership="none">
+              <type name="Animatable" c:type="ClutterAnimatable*"/>
+            </parameter>
+            <parameter name="animation" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #ClutterAnimation</doc>
+              <type name="Animation" c:type="ClutterAnimation*"/>
+            </parameter>
+            <parameter name="property_name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the name of the animated property</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="initial_value" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the initial value of the animation interval</doc>
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="final_value" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the final value of the animation interval</doc>
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="progress" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the progress factor</doc>
+              <type name="gdouble" c:type="gdouble"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <doc xml:whitespace="preserve">return location for the animation value</doc>
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="find_property">
+        <callback name="find_property">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GParamSpec for the given property</doc>
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </return-value>
+          <parameters>
+            <parameter name="animatable" transfer-ownership="none">
+              <type name="Animatable" c:type="ClutterAnimatable*"/>
+            </parameter>
+            <parameter name="property_name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the name of the animatable property to find</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_initial_state">
+        <callback name="get_initial_state">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="animatable" transfer-ownership="none">
+              <type name="Animatable" c:type="ClutterAnimatable*"/>
+            </parameter>
+            <parameter name="property_name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the name of the animatable property to retrieve</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GValue initialized to the type of the property to retrieve</doc>
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_final_state">
+        <callback name="set_final_state">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="animatable" transfer-ownership="none">
+              <type name="Animatable" c:type="ClutterAnimatable*"/>
+            </parameter>
+            <parameter name="property_name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the name of the animatable property to set</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the value of the animatable property to set</doc>
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="Animation"
+           c:symbol-prefix="animation"
+           c:type="ClutterAnimation"
+           version="1.0"
+           parent="GObject.Object"
+           glib:type-name="ClutterAnimation"
+           glib:get-type="clutter_animation_get_type"
+           glib:type-struct="AnimationClass">
+      <doc xml:whitespace="preserve">The #ClutterAnimation structure contains only private data and should
+be accessed using the provided functions.</doc>
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_animation_new"
+                   version="1.0">
+        <doc xml:whitespace="preserve">Creates a new #ClutterAnimation instance. You should set the
+#GObject to be animated using clutter_animation_set_object(),
+set the duration with clutter_animation_set_duration() and the
+easing mode using clutter_animation_set_mode().
+Use clutter_animation_bind() or clutter_animation_bind_interval()
+to define the properties to be animated. The interval and the
+animated properties can be updated at runtime.
+The clutter_actor_animate() and relative family of functions provide
+an easy way to animate a #ClutterActor and automatically manage the
+lifetime of a #ClutterAnimation instance, so you should consider using
+those functions instead of manually creating an animation.
+to release the associated resources</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #ClutterAnimation. Use g_object_unref()</doc>
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+      </constructor>
+      <virtual-method name="completed" invoker="completed" version="1.0">
+        <doc xml:whitespace="preserve">Emits the ::completed signal on @animation
+When using this function with a #ClutterAnimation created
+by the clutter_actor_animate() family of functions, @animation
+will be unreferenced and it will not be valid anymore,
+unless g_object_ref() was called before calling this function
+or unless a reference was taken inside a handler for the
+#ClutterAnimation::completed signal</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="started">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <method name="bind" c:identifier="clutter_animation_bind" version="1.0">
+        <doc xml:whitespace="preserve">Adds a single property with name @property_name to the
+animation @animation.  For more information about animations,
+see clutter_actor_animate().
+This method returns the animation primarily to make chained
+calls convenient in language bindings.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The animation itself.</doc>
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the property to control</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="final" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The final value of the property</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="bind_interval"
+              c:identifier="clutter_animation_bind_interval"
+              version="1.0">
+        <doc xml:whitespace="preserve">Binds @interval to the @property_name of the #GObject
+attached to @animation. The #ClutterAnimation will take
+ownership of the passed #ClutterInterval.  For more information
+about animations, see clutter_actor_animate().
+If you need to update the interval instance use
+clutter_animation_update_property() instead.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The animation itself.</doc>
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the property to control</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="interval" transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #ClutterInterval</doc>
+            <type name="Interval" c:type="ClutterInterval*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="completed"
+              c:identifier="clutter_animation_completed"
+              version="1.0">
+        <doc xml:whitespace="preserve">Emits the ::completed signal on @animation
+When using this function with a #ClutterAnimation created
+by the clutter_actor_animate() family of functions, @animation
+will be unreferenced and it will not be valid anymore,
+unless g_object_ref() was called before calling this function
+or unless a reference was taken inside a handler for the
+#ClutterAnimation::completed signal</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_alpha"
+              c:identifier="clutter_animation_get_alpha"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterAlpha used by @animation.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the alpha object used by the animation</doc>
+          <type name="Alpha" c:type="ClutterAlpha*"/>
+        </return-value>
+      </method>
+      <method name="get_duration"
+              c:identifier="clutter_animation_get_duration"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the duration of @animation, in milliseconds.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the duration of the animation</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_interval"
+              c:identifier="clutter_animation_get_interval"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterInterval associated to @property_name
+inside @animation.
+property with the same name was found. The returned interval is
+owned by the #ClutterAnimation and should not be unreferenced</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterInterval or %NULL if no</doc>
+          <type name="Interval" c:type="ClutterInterval*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_loop"
+              c:identifier="clutter_animation_get_loop"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves whether @animation is looping.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the animation is looping</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_mode"
+              c:identifier="clutter_animation_get_mode"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the animation mode of @animation, as set by
+clutter_animation_set_mode().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the mode for the animation</doc>
+          <type name="gulong" c:type="gulong"/>
+        </return-value>
+      </method>
+      <method name="get_object"
+              c:identifier="clutter_animation_get_object"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the #GObject attached to @animation.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GObject</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+      </method>
+      <method name="get_timeline"
+              c:identifier="clutter_animation_get_timeline"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterTimeline used by @animation</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the timeline used by the animation</doc>
+          <type name="Timeline" c:type="ClutterTimeline*"/>
+        </return-value>
+      </method>
+      <method name="has_property"
+              c:identifier="clutter_animation_has_property"
+              version="1.0">
+        <doc xml:whitespace="preserve">Checks whether @animation is controlling @property_name.
+#ClutterAnimation, %FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the property is animated by the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_alpha"
+              c:identifier="clutter_animation_set_alpha"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets @alpha as the #ClutterAlpha used by @animation.
+If @alpha is not %NULL, the #ClutterAnimation will take ownership
+of the #ClutterAlpha instance.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterAlpha, or %NULL to unset the current #ClutterAlpha</doc>
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_duration"
+              c:identifier="clutter_animation_set_duration"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the duration of @animation in milliseconds.
+This function will set #ClutterAnimation:alpha and
+#ClutterAnimation:timeline if needed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the duration in milliseconds</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_loop"
+              c:identifier="clutter_animation_set_loop"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets whether @animation should loop over itself once finished.
+A looping #ClutterAnimation will not emit the #ClutterAnimation::completed
+signal when finished.
+This function will set #ClutterAnimation:alpha and
+#ClutterAnimation:timeline if needed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="loop" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the animation should loop</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_mode"
+              c:identifier="clutter_animation_set_mode"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the animation @mode of @animation. The animation @mode is
+a logical id, either coming from the #ClutterAnimationMode enumeration
+or the return value of clutter_alpha_register_func().
+This function will also set #ClutterAnimation:alpha if needed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an animation mode logical id</doc>
+            <type name="gulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_object"
+              c:identifier="clutter_animation_set_object"
+              version="1.0">
+        <doc xml:whitespace="preserve">Attaches @animation to @object. The #ClutterAnimation will take a
+reference on @object.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_timeline"
+              c:identifier="clutter_animation_set_timeline"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the #ClutterTimeline used by @animation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeline" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterTimeline, or %NULL to unset the current #ClutterTimeline</doc>
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unbind_property"
+              c:identifier="clutter_animation_unbind_property"
+              version="1.0">
+        <doc xml:whitespace="preserve">Removes @property_name from the list of animated properties.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="update"
+              c:identifier="clutter_animation_update"
+              version="1.0">
+        <doc xml:whitespace="preserve">Updates the @final value of the interval for @property_name</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The animation itself.</doc>
+          <type name="Animation" c:type="ClutterAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="final" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The final value of the property</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="update_interval"
+              c:identifier="clutter_animation_update_interval"
+              version="1.0">
+        <doc xml:whitespace="preserve">Changes the @interval for @property_name. The #ClutterAnimation
+will take ownership of the passed #ClutterInterval.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="interval" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterInterval</doc>
+            <type name="Interval" c:type="ClutterInterval*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="alpha"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #ClutterAlpha used by the animation.</doc>
+        <type name="Alpha"/>
+      </property>
+      <property name="duration"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The duration of the animation, expressed in milliseconds.</doc>
+        <type name="guint"/>
+      </property>
+      <property name="loop"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the animation should loop.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="mode"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The animation mode, either a value from #ClutterAnimationMode
+or a value returned by clutter_alpha_register_func(). The
+default value is %CLUTTER_LINEAR.</doc>
+        <type name="gulong"/>
+      </property>
+      <property name="object"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #GObject to which the animation applies.</doc>
+        <type name="GObject.Object"/>
+      </property>
+      <property name="timeline"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #ClutterTimeline used by the animation.</doc>
+        <type name="Timeline"/>
+      </property>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="AnimationPrivate" c:type="ClutterAnimationPrivate*"/>
+      </field>
+      <glib:signal name="completed" version="1.0">
+        <doc xml:whitespace="preserve">The ::completed signal is emitted once the animation has
+been completed.
+The @animation instance is guaranteed to be valid for the entire
+duration of the signal emission chain.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="started" version="1.0">
+        <doc xml:whitespace="preserve">The ::started signal is emitted once the animation has been
+started</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="AnimationClass"
+            c:type="ClutterAnimationClass"
+            glib:is-gtype-struct-for="Animation"
+            version="1.0">
+      <doc xml:whitespace="preserve">The #ClutterAnimationClass structure contains only private data and
+should be accessed using the provided functions.</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="started">
+        <callback name="started">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="animation" transfer-ownership="none">
+              <type name="Animation" c:type="ClutterAnimation*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="completed">
+        <callback name="completed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="animation" transfer-ownership="none">
+              <type name="Animation" c:type="ClutterAnimation*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_reserved1" introspectable="0">
+        <callback name="_clutter_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved2" introspectable="0">
+        <callback name="_clutter_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved3" introspectable="0">
+        <callback name="_clutter_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved4" introspectable="0">
+        <callback name="_clutter_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved5" introspectable="0">
+        <callback name="_clutter_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved6" introspectable="0">
+        <callback name="_clutter_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved7" introspectable="0">
+        <callback name="_clutter_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved8" introspectable="0">
+        <callback name="_clutter_reserved8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="AnimationMode"
+                 version="1.0"
+                 glib:type-name="ClutterAnimationMode"
+                 glib:get-type="clutter_animation_mode_get_type"
+                 c:type="ClutterAnimationMode">
+      <doc xml:whitespace="preserve">The animation modes used by #ClutterAlpha and #ClutterAnimation. This
+enumeration can be expanded in later versions of Clutter. See the
+#ClutterAlpha documentation for a graph of all the animation modes.
+Every global alpha function registered using clutter_alpha_register_func()
+or clutter_alpha_register_closure() will have a logical id greater than
+%CLUTTER_ANIMATION_LAST.</doc>
+      <member name="custom_mode"
+              value="0"
+              c:identifier="CLUTTER_CUSTOM_MODE"
+              glib:nick="custom-mode"/>
+      <member name="linear"
+              value="1"
+              c:identifier="CLUTTER_LINEAR"
+              glib:nick="linear"/>
+      <member name="ease_in_quad"
+              value="2"
+              c:identifier="CLUTTER_EASE_IN_QUAD"
+              glib:nick="ease-in-quad"/>
+      <member name="ease_out_quad"
+              value="3"
+              c:identifier="CLUTTER_EASE_OUT_QUAD"
+              glib:nick="ease-out-quad"/>
+      <member name="ease_in_out_quad"
+              value="4"
+              c:identifier="CLUTTER_EASE_IN_OUT_QUAD"
+              glib:nick="ease-in-out-quad"/>
+      <member name="ease_in_cubic"
+              value="5"
+              c:identifier="CLUTTER_EASE_IN_CUBIC"
+              glib:nick="ease-in-cubic"/>
+      <member name="ease_out_cubic"
+              value="6"
+              c:identifier="CLUTTER_EASE_OUT_CUBIC"
+              glib:nick="ease-out-cubic"/>
+      <member name="ease_in_out_cubic"
+              value="7"
+              c:identifier="CLUTTER_EASE_IN_OUT_CUBIC"
+              glib:nick="ease-in-out-cubic"/>
+      <member name="ease_in_quart"
+              value="8"
+              c:identifier="CLUTTER_EASE_IN_QUART"
+              glib:nick="ease-in-quart"/>
+      <member name="ease_out_quart"
+              value="9"
+              c:identifier="CLUTTER_EASE_OUT_QUART"
+              glib:nick="ease-out-quart"/>
+      <member name="ease_in_out_quart"
+              value="10"
+              c:identifier="CLUTTER_EASE_IN_OUT_QUART"
+              glib:nick="ease-in-out-quart"/>
+      <member name="ease_in_quint"
+              value="11"
+              c:identifier="CLUTTER_EASE_IN_QUINT"
+              glib:nick="ease-in-quint"/>
+      <member name="ease_out_quint"
+              value="12"
+              c:identifier="CLUTTER_EASE_OUT_QUINT"
+              glib:nick="ease-out-quint"/>
+      <member name="ease_in_out_quint"
+              value="13"
+              c:identifier="CLUTTER_EASE_IN_OUT_QUINT"
+              glib:nick="ease-in-out-quint"/>
+      <member name="ease_in_sine"
+              value="14"
+              c:identifier="CLUTTER_EASE_IN_SINE"
+              glib:nick="ease-in-sine"/>
+      <member name="ease_out_sine"
+              value="15"
+              c:identifier="CLUTTER_EASE_OUT_SINE"
+              glib:nick="ease-out-sine"/>
+      <member name="ease_in_out_sine"
+              value="16"
+              c:identifier="CLUTTER_EASE_IN_OUT_SINE"
+              glib:nick="ease-in-out-sine"/>
+      <member name="ease_in_expo"
+              value="17"
+              c:identifier="CLUTTER_EASE_IN_EXPO"
+              glib:nick="ease-in-expo"/>
+      <member name="ease_out_expo"
+              value="18"
+              c:identifier="CLUTTER_EASE_OUT_EXPO"
+              glib:nick="ease-out-expo"/>
+      <member name="ease_in_out_expo"
+              value="19"
+              c:identifier="CLUTTER_EASE_IN_OUT_EXPO"
+              glib:nick="ease-in-out-expo"/>
+      <member name="ease_in_circ"
+              value="20"
+              c:identifier="CLUTTER_EASE_IN_CIRC"
+              glib:nick="ease-in-circ"/>
+      <member name="ease_out_circ"
+              value="21"
+              c:identifier="CLUTTER_EASE_OUT_CIRC"
+              glib:nick="ease-out-circ"/>
+      <member name="ease_in_out_circ"
+              value="22"
+              c:identifier="CLUTTER_EASE_IN_OUT_CIRC"
+              glib:nick="ease-in-out-circ"/>
+      <member name="ease_in_elastic"
+              value="23"
+              c:identifier="CLUTTER_EASE_IN_ELASTIC"
+              glib:nick="ease-in-elastic"/>
+      <member name="ease_out_elastic"
+              value="24"
+              c:identifier="CLUTTER_EASE_OUT_ELASTIC"
+              glib:nick="ease-out-elastic"/>
+      <member name="ease_in_out_elastic"
+              value="25"
+              c:identifier="CLUTTER_EASE_IN_OUT_ELASTIC"
+              glib:nick="ease-in-out-elastic"/>
+      <member name="ease_in_back"
+              value="26"
+              c:identifier="CLUTTER_EASE_IN_BACK"
+              glib:nick="ease-in-back"/>
+      <member name="ease_out_back"
+              value="27"
+              c:identifier="CLUTTER_EASE_OUT_BACK"
+              glib:nick="ease-out-back"/>
+      <member name="ease_in_out_back"
+              value="28"
+              c:identifier="CLUTTER_EASE_IN_OUT_BACK"
+              glib:nick="ease-in-out-back"/>
+      <member name="ease_in_bounce"
+              value="29"
+              c:identifier="CLUTTER_EASE_IN_BOUNCE"
+              glib:nick="ease-in-bounce"/>
+      <member name="ease_out_bounce"
+              value="30"
+              c:identifier="CLUTTER_EASE_OUT_BOUNCE"
+              glib:nick="ease-out-bounce"/>
+      <member name="ease_in_out_bounce"
+              value="31"
+              c:identifier="CLUTTER_EASE_IN_OUT_BOUNCE"
+              glib:nick="ease-in-out-bounce"/>
+      <member name="animation_last"
+              value="32"
+              c:identifier="CLUTTER_ANIMATION_LAST"
+              glib:nick="animation-last"/>
+    </enumeration>
+    <record name="AnimationPrivate"
+            c:type="ClutterAnimationPrivate"
+            disguised="1">
+    </record>
+    <class name="Animator"
+           c:symbol-prefix="animator"
+           c:type="ClutterAnimator"
+           version="1.2"
+           parent="GObject.Object"
+           glib:type-name="ClutterAnimator"
+           glib:get-type="clutter_animator_get_type"
+           glib:type-struct="AnimatorClass">
+      <doc xml:whitespace="preserve">The #ClutterAnimator structure contains only private data and
+should be accessed using the provided API</doc>
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_animator_new"
+                   version="1.2">
+        <doc xml:whitespace="preserve">Creates a new #ClutterAnimator instance</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #ClutterAnimator.</doc>
+          <type name="Animator" c:type="ClutterAnimator*"/>
+        </return-value>
+      </constructor>
+      <method name="compute_value"
+              c:identifier="clutter_animator_compute_value"
+              version="1.2">
+        <doc xml:whitespace="preserve">Compute the value for a managed property at a given progress.
+If the property is an ease-in property, the current value of the property
+on the object will be used as the starting point for computation.
+an error occurs or the progress is before any of the keys) %FALSE is
+returned and the #GValue is left untouched</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the computation yields has a value, otherwise (when</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property on object to check</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="progress" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a value between 0.0 and 1.0</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an initialized value to store the computed result</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_duration"
+              c:identifier="clutter_animator_get_duration"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the current duration of an animator</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the duration of the animation, in milliseconds</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_keys"
+              c:identifier="clutter_animator_get_keys"
+              version="1.2">
+        <doc xml:whitespace="preserve">Returns a list of pointers to opaque structures with accessor functions
+that describe the keys added to an animator.
+list of #ClutterAnimatorKey&lt;!-- --&gt;s; the contents of the list are owned
+by the #ClutterAnimator, but you should free the returned list when done,
+using g_list_free()</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="AnimatorKey"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GObject to search for, or %NULL for all objects</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a specific property name to query for, or %NULL for all properties</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="progress" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a specific progress to search for, or a negative value for all progresses</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_timeline"
+              c:identifier="clutter_animator_get_timeline"
+              version="1.2">
+        <doc xml:whitespace="preserve">Get the timeline hooked up for driving the #ClutterAnimator</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #ClutterTimeline that drives the animator</doc>
+          <type name="Timeline" c:type="ClutterTimeline*"/>
+        </return-value>
+      </method>
+      <method name="property_get_ease_in"
+              c:identifier="clutter_animator_property_get_ease_in"
+              version="1.2">
+        <doc xml:whitespace="preserve">Checks if a property value is to be eased into the animation.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the property is eased in</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a property on object</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="property_get_interpolation"
+              c:identifier="clutter_animator_property_get_interpolation"
+              version="1.2">
+        <doc xml:whitespace="preserve">Get the interpolation used by animator for a property on a particular
+object.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a ClutterInterpolation value.</doc>
+          <type name="Interpolation" c:type="ClutterInterpolation"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a property on object</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="property_set_ease_in"
+              c:identifier="clutter_animator_property_set_ease_in"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets whether a property value is to be eased into the animation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a property on object</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="ease_in" transfer-ownership="none">
+            <doc xml:whitespace="preserve">we are going to be easing in this property</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="property_set_interpolation"
+              c:identifier="clutter_animator_property_set_interpolation"
+              version="1.2">
+        <doc xml:whitespace="preserve">Set the interpolation method to use, %CLUTTER_INTERPOLATION_LINEAR causes
+the values to linearly change between the values, and
+%CLUTTER_INTERPOLATION_CUBIC causes the values to smoothly change between
+the values.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a property on object</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="interpolation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterInterpolation to use</doc>
+            <type name="Interpolation" c:type="ClutterInterpolation"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_key"
+              c:identifier="clutter_animator_remove_key"
+              version="1.2">
+        <doc xml:whitespace="preserve">Removes all keys matching the conditions specificed in the arguments.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GObject to search for, or %NULL for all</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a specific property name to query for, or %NULL for all</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="progress" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a specific progress to search for or a negative value for all</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set"
+              c:identifier="clutter_animator_set"
+              version="1.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Adds multiple keys to a #ClutterAnimator, specifying the value a given
+property should have at a given progress of the animation. The mode
+specified is the mode used when going to this key from the previous key of
+the @property_name
+If a given (object, property, progress) tuple already exist the mode and
+value will be replaced with the new values.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="first_property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the property to specify a key for</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="first_mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the id of the alpha function to use</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="first_progress" transfer-ownership="none">
+            <doc xml:whitespace="preserve">at which stage of the animation this value applies; the range is a normalized floating point value between 0 and 1</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_duration"
+              c:identifier="clutter_animator_set_duration"
+              version="1.2">
+        <doc xml:whitespace="preserve">Runs the timeline of the #ClutterAnimator with a duration in msecs
+as specified.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="duration" transfer-ownership="none">
+            <doc xml:whitespace="preserve">milliseconds a run of the animator should last.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_key"
+              c:identifier="clutter_animator_set_key"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets a single key in the #ClutterAnimator for the @property_name of</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The animator instance</doc>
+          <type name="Animator" c:type="ClutterAnimator*"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the property to specify a key for</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the id of the alpha function to use</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="progress" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the normalized range at which stage of the animation this value applies</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value property_name should have at progress.</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_timeline"
+              c:identifier="clutter_animator_set_timeline"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets an external timeline that will be used for driving the animation</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeline" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterTimeline</doc>
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="start" c:identifier="clutter_animator_start" version="1.2">
+        <doc xml:whitespace="preserve">Start the ClutterAnimator, this is a thin wrapper that rewinds
+and starts the animators current timeline.
+the animator. The returned timeline is owned by the #ClutterAnimator
+and it should not be unreferenced</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #ClutterTimeline that drives</doc>
+          <type name="Timeline" c:type="ClutterTimeline*"/>
+        </return-value>
+      </method>
+      <property name="duration"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The duration of the #ClutterTimeline used by the #ClutterAnimator
+to drive the animation</doc>
+        <type name="guint"/>
+      </property>
+      <property name="timeline"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #ClutterTimeline used by the #ClutterAnimator to drive the
+animation</doc>
+        <type name="Timeline"/>
+      </property>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="AnimatorPrivate" c:type="ClutterAnimatorPrivate*"/>
+      </field>
+    </class>
+    <record name="AnimatorClass"
+            c:type="ClutterAnimatorClass"
+            glib:is-gtype-struct-for="Animator"
+            version="1.2">
+      <doc xml:whitespace="preserve">The #ClutterAnimatorClass structure contains only private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_padding_dummy" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="16">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <record name="AnimatorKey"
+            c:type="ClutterAnimatorKey"
+            version="1.2"
+            glib:type-name="ClutterAnimatorKey"
+            glib:get-type="clutter_animator_key_get_type"
+            c:symbol-prefix="animator_key">
+      <doc xml:whitespace="preserve">A key frame inside a #ClutterAnimator</doc>
+      <method name="get_mode"
+              c:identifier="clutter_animator_key_get_mode"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the mode of a #ClutterAnimator key, for the first key of a
+property for an object this represents the whether the animation is
+open ended and or curved for the remainding keys for the property it
+represents the easing mode.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the mode of a #ClutterAnimatorKey</doc>
+          <type name="gulong" c:type="gulong"/>
+        </return-value>
+      </method>
+      <method name="get_object"
+              c:identifier="clutter_animator_key_get_object"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the object a key applies to.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the object an animator_key exist for.</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+      </method>
+      <method name="get_progress"
+              c:identifier="clutter_animator_key_get_progress"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the progress of an clutter_animator_key</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the progress defined for a #ClutterAnimator key.</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_property_name"
+              c:identifier="clutter_animator_key_get_property_name"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the name of the property a key applies to.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the property an animator_key exist for.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_property_type"
+              c:identifier="clutter_animator_key_get_property_type"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the #GType of the property a key applies to
+You can use this type to initialize the #GValue to pass to
+clutter_animator_key_get_value()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GType of the property</doc>
+          <type name="GType" c:type="GType"/>
+        </return-value>
+      </method>
+      <method name="get_value"
+              c:identifier="clutter_animator_key_get_value"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves a copy of the value for a #ClutterAnimatorKey.
+The passed in #GValue needs to be already initialized for the value
+type of the key or to a type that allow transformation from the value
+type of the key.
+Use g_value_unset() when done.
+%FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the passed #GValue was successfully set, and</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue initialized with the correct type for the animator key</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="AnimatorPrivate"
+            c:type="ClutterAnimatorPrivate"
+            disguised="1">
+    </record>
+    <record name="AnyEvent" c:type="ClutterAnyEvent" version="0.2">
+      <doc xml:whitespace="preserve">Common members for a #ClutterEvent</doc>
+      <field name="type" writable="1">
+        <type name="EventType" c:type="ClutterEventType"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="EventFlags" c:type="ClutterEventFlags"/>
+      </field>
+      <field name="stage" writable="1">
+        <type name="Stage" c:type="ClutterStage*"/>
+      </field>
+      <field name="source" writable="1">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </field>
+    </record>
+    <constant name="Aogonek" value="417">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ApplicationLeft" value="269025104">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ApplicationRight" value="269025105">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_0" value="16778848">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_1" value="16778849">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_2" value="16778850">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_3" value="16778851">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_4" value="16778852">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_5" value="16778853">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_6" value="16778854">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_7" value="16778855">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_8" value="16778856">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_9" value="16778857">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_ain" value="1497">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_alef" value="1479">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_alefmaksura" value="1513">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_beh" value="1480">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_comma" value="1452">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_dad" value="1494">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_dal" value="1487">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_damma" value="1519">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_dammatan" value="1516">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_ddal" value="16778888">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_farsi_yeh" value="16778956">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_fatha" value="1518">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_fathatan" value="1515">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_feh" value="1505">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_fullstop" value="16778964">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_gaf" value="16778927">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_ghain" value="1498">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_ha" value="1511">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_hah" value="1485">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_hamza" value="1473">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_hamza_above" value="16778836">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_hamza_below" value="16778837">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_hamzaonalef" value="1475">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_hamzaonwaw" value="1476">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_hamzaonyeh" value="1478">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_hamzaunderalef" value="1477">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_heh" value="1511">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_heh_doachashmee" value="16778942">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_heh_goal" value="16778945">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_jeem" value="1484">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_jeh" value="16778904">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_kaf" value="1507">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_kasra" value="1520">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_kasratan" value="1517">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_keheh" value="16778921">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_khah" value="1486">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_lam" value="1508">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_madda_above" value="16778835">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_maddaonalef" value="1474">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_meem" value="1509">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_noon" value="1510">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_noon_ghunna" value="16778938">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_peh" value="16778878">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_percent" value="16778858">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_qaf" value="1506">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_question_mark" value="1471">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_ra" value="1489">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_rreh" value="16778897">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_sad" value="1493">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_seen" value="1491">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_semicolon" value="1467">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_shadda" value="1521">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_sheen" value="1492">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_sukun" value="1522">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_superscript_alef" value="16778864">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_switch" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_tah" value="1495">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_tatweel" value="1504">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_tcheh" value="16778886">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_teh" value="1482">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_tehmarbuta" value="1481">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_thal" value="1488">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_theh" value="1483">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_tteh" value="16778873">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_veh" value="16778916">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_waw" value="1512">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_yeh" value="1514">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_yeh_baree" value="16778962">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_zah" value="1496">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Arabic_zain" value="1490">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Aring" value="197">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_AT" value="16778552">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_AYB" value="16778545">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_BEN" value="16778546">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_CHA" value="16778569">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_DA" value="16778548">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_DZA" value="16778561">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_E" value="16778551">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_FE" value="16778582">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_GHAT" value="16778562">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_GIM" value="16778547">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_HI" value="16778565">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_HO" value="16778560">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_INI" value="16778555">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_JE" value="16778571">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_KE" value="16778580">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_KEN" value="16778559">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_KHE" value="16778557">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_LYUN" value="16778556">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_MEN" value="16778564">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_NU" value="16778566">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_O" value="16778581">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_PE" value="16778570">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_PYUR" value="16778579">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_RA" value="16778572">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_RE" value="16778576">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_SE" value="16778573">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_SHA" value="16778567">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_TCHE" value="16778563">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_TO" value="16778553">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_TSA" value="16778558">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_TSO" value="16778577">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_TYUN" value="16778575">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_VEV" value="16778574">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_VO" value="16778568">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_VYUN" value="16778578">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_YECH" value="16778549">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_ZA" value="16778550">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_ZHE" value="16778554">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_accent" value="16778587">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_amanak" value="16778588">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_apostrophe" value="16778586">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_at" value="16778600">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_ayb" value="16778593">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_ben" value="16778594">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_but" value="16778589">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_cha" value="16778617">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_da" value="16778596">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_dza" value="16778609">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_e" value="16778599">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_exclam" value="16778588">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_fe" value="16778630">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_full_stop" value="16778633">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_ghat" value="16778610">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_gim" value="16778595">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_hi" value="16778613">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_ho" value="16778608">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_hyphen" value="16778634">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_ini" value="16778603">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_je" value="16778619">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_ke" value="16778628">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_ken" value="16778607">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_khe" value="16778605">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_ligature_ew" value="16778631">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_lyun" value="16778604">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_men" value="16778612">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_nu" value="16778614">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_o" value="16778629">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_paruyk" value="16778590">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_pe" value="16778618">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_pyur" value="16778627">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_question" value="16778590">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_ra" value="16778620">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_re" value="16778624">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_se" value="16778621">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_separation_mark" value="16778589">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_sha" value="16778615">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_shesht" value="16778587">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_tche" value="16778611">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_to" value="16778601">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_tsa" value="16778606">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_tso" value="16778625">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_tyun" value="16778623">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_verjaket" value="16778633">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_vev" value="16778622">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_vo" value="16778616">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_vyun" value="16778626">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_yech" value="16778597">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_yentamna" value="16778634">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_za" value="16778598">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Armenian_zhe" value="16778602">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Atilde" value="195">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AudibleBell_Enable" value="65146">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AudioCycleTrack" value="269025179">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AudioForward" value="269025175">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AudioLowerVolume" value="269025041">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AudioMedia" value="269025074">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AudioMute" value="269025042">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AudioNext" value="269025047">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AudioPause" value="269025073">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AudioPlay" value="269025044">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AudioPrev" value="269025046">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AudioRaiseVolume" value="269025043">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AudioRandomPlay" value="269025177">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AudioRecord" value="269025052">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AudioRepeat" value="269025176">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AudioRewind" value="269025086">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="AudioStop" value="269025045">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Away" value="269025165">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="B" value="66">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Babovedot" value="16784898">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Back" value="269025062">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="BackForward" value="269025087">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="BackSpace" value="65288">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Backend"
+           c:symbol-prefix="backend"
+           c:type="ClutterBackend"
+           version="0.4"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="ClutterBackend"
+           glib:get-type="clutter_backend_get_type"
+           glib:type-struct="BackendClass">
+      <doc xml:whitespace="preserve">&lt;structname&gt;ClutterBackend&lt;/structname&gt; is an opaque structure whose
+members cannot be directly accessed.</doc>
+      <method name="get_double_click_distance"
+              c:identifier="clutter_backend_get_double_click_distance"
+              version="0.4"
+              deprecated="Use #ClutterSettings:double-click-distance instead"
+              deprecated-version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the distance used to verify a double click event</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a distance, in pixels.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_double_click_time"
+              c:identifier="clutter_backend_get_double_click_time"
+              version="0.4"
+              deprecated="Use #ClutterSettings:double-click-time instead"
+              deprecated-version="1.4">
+        <doc xml:whitespace="preserve">Gets the maximum time between two button press events, as set
+by clutter_backend_set_double_click_time().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a time in milliseconds</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_font_name"
+              c:identifier="clutter_backend_get_font_name"
+              version="1.0"
+              deprecated="Use #ClutterSettings:font-name instead"
+              deprecated-version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the default font name as set by
+clutter_backend_set_font_name().
+owned by the #ClutterBackend and should never be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the font name for the backend. The returned string is</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_font_options"
+              c:identifier="clutter_backend_get_font_options"
+              version="0.8">
+        <doc xml:whitespace="preserve">Retrieves the font options for @backend.
+The returned #cairo_font_options_t is owned by the backend and should
+not be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the font options of the #ClutterBackend.</doc>
+          <type name="cairo.FontOptions" c:type="cairo_font_options_t*"/>
+        </return-value>
+      </method>
+      <method name="get_resolution"
+              c:identifier="clutter_backend_get_resolution"
+              version="0.4">
+        <doc xml:whitespace="preserve">Gets the resolution for font handling on the screen.
+The resolution is a scale factor between points specified in a
+#PangoFontDescription and cairo units. The default value is 96.0,
+meaning that a 10 point font will be 13 units
+high (10 * 96. / 72. = 13.3).
+Clutter will set the resolution using the current backend when
+initializing; the resolution is also stored in the
+#ClutterSettings:font-dpi property.
+has been set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current resolution, or -1 if no resolution</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="set_double_click_distance"
+              c:identifier="clutter_backend_set_double_click_distance"
+              version="0.4"
+              deprecated="Use #ClutterSettings:double-click-distance instead"
+              deprecated-version="1.4">
+        <doc xml:whitespace="preserve">Sets the maximum distance used to verify a double click event.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="distance" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a distance, in pixels</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_double_click_time"
+              c:identifier="clutter_backend_set_double_click_time"
+              version="0.4"
+              deprecated="Use #ClutterSettings:double-click-time instead"
+              deprecated-version="1.4">
+        <doc xml:whitespace="preserve">Sets the maximum time between two button press events, used to
+verify whether it's a double click event or not.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">milliseconds between two button press events</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_font_name"
+              c:identifier="clutter_backend_set_font_name"
+              version="1.0"
+              deprecated="Use #ClutterSettings:font-name instead"
+              deprecated-version="1.4">
+        <doc xml:whitespace="preserve">Sets the default font to be used by Clutter. The @font_name string
+must either be %NULL, which means that the font name from the
+default #ClutterBackend will be used; or be something that can
+be parsed by the pango_font_description_from_string() function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the font</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_font_options"
+              c:identifier="clutter_backend_set_font_options"
+              version="0.8">
+        <doc xml:whitespace="preserve">Sets the new font options for @backend. The #ClutterBackend will
+copy the #cairo_font_options_t.
+If @options is %NULL, the first following call to
+clutter_backend_get_font_options() will return the default font
+options for @backend.
+This function is intended for actors creating a Pango layout
+using the PangoCairo API.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="options" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Cairo font options for the backend, or %NULL</doc>
+            <type name="cairo.FontOptions" c:type="cairo_font_options_t*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_resolution"
+              c:identifier="clutter_backend_set_resolution"
+              version="0.4"
+              deprecated="Use #ClutterSettings:font-dpi instead">
+        <doc xml:whitespace="preserve">Sets the resolution for font handling on the screen. This is a
+scale factor between points specified in a #PangoFontDescription
+and cairo units. The default value is 96, meaning that a 10 point
+font will be 13 units high. (10 * 96. / 72. = 13.3).
+Applications should never need to call this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dpi" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the resolution in "dots per inch" (Physical inches aren't actually involved; the terminology is conventional).</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="font-changed">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="resolution-changed">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="settings-changed">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="BackendClass"
+            c:type="ClutterBackendClass"
+            disguised="1"
+            glib:is-gtype-struct-for="Backend">
+    </record>
+    <constant name="Battery" value="269025171">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Begin" value="65368">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Behaviour"
+           c:symbol-prefix="behaviour"
+           c:type="ClutterBehaviour"
+           version="0.2"
+           deprecated="1.6"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="ClutterBehaviour"
+           glib:get-type="clutter_behaviour_get_type"
+           glib:type-struct="BehaviourClass">
+      <doc xml:whitespace="preserve">#ClutterBehaviour-struct contains only private data and should
+be accessed with the functions below.</doc>
+      <implements name="Scriptable"/>
+      <virtual-method name="alpha_notify">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha_value" transfer-ownership="none">
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="applied">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="removed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="actors_foreach"
+              c:identifier="clutter_behaviour_actors_foreach"
+              version="0.2">
+        <doc xml:whitespace="preserve">Calls @func for every actor driven by @behave.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">a function called for each actor</doc>
+            <type name="BehaviourForeachFunc"
+                  c:type="ClutterBehaviourForeachFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">optional data to be passed to the function, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="apply"
+              c:identifier="clutter_behaviour_apply"
+              version="0.2">
+        <doc xml:whitespace="preserve">Applies @behave to @actor.  This function adds a reference on
+the actor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_actors"
+              c:identifier="clutter_behaviour_get_actors"
+              version="0.2">
+        <doc xml:whitespace="preserve">Retrieves all the actors to which @behave applies. It is not recommended
+for derived classes to use this in there alpha notify method but use 
+#clutter_behaviour_actors_foreach as it avoids alot of needless allocations.
+actors. You should free the returned list with g_slist_free() when
+finished using it.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a list of</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="Actor"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_alpha"
+              c:identifier="clutter_behaviour_get_alpha"
+              version="0.2">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterAlpha object bound to @behave.
+object has been bound to this behaviour.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterAlpha object, or %NULL if no alpha</doc>
+          <type name="Alpha" c:type="ClutterAlpha*"/>
+        </return-value>
+      </method>
+      <method name="get_n_actors"
+              c:identifier="clutter_behaviour_get_n_actors"
+              version="0.2">
+        <doc xml:whitespace="preserve">Gets the number of actors this behaviour is applied too.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of applied actors</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_nth_actor"
+              c:identifier="clutter_behaviour_get_nth_actor"
+              version="0.2">
+        <doc xml:whitespace="preserve">Gets an actor the behaviour was applied to referenced by index num.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A Clutter actor or NULL if @index_ is invalid.</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of an actor this behaviour is applied too.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_applied"
+              c:identifier="clutter_behaviour_is_applied"
+              version="0.4">
+        <doc xml:whitespace="preserve">Check if @behave applied to  @actor.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if actor has behaviour. FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove"
+              c:identifier="clutter_behaviour_remove"
+              version="0.2">
+        <doc xml:whitespace="preserve">Removes @actor from the list of #ClutterActor&lt;!-- --&gt;s to which</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_all"
+              c:identifier="clutter_behaviour_remove_all"
+              version="0.4">
+        <doc xml:whitespace="preserve">Removes every actor from the list that @behave holds.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_alpha"
+              c:identifier="clutter_behaviour_set_alpha"
+              version="0.2">
+        <doc xml:whitespace="preserve">Binds @alpha to a #ClutterBehaviour. The #ClutterAlpha object
+used by #ClutterAlpha a new value of the alpha parameter is
+computed by the alpha function; the value should be used by
+the #ClutterBehaviour to update one or more properties of the
+actors to which the behaviour applies.
+If @alpha is not %NULL, the #ClutterBehaviour will take ownership
+of the #ClutterAlpha instance.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterAlpha or %NULL to unset a previously set alpha</doc>
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="alpha"
+                version="0.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #ClutterAlpha object used to drive this behaviour. A #ClutterAlpha
+object binds a #ClutterTimeline and a function which computes a value
+(the "alpha") depending on the time. Each time the alpha value changes
+the alpha-notify virtual function is called.</doc>
+        <type name="Alpha"/>
+      </property>
+      <field name="parent" readable="0" private="1">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="BehaviourPrivate" c:type="ClutterBehaviourPrivate*"/>
+      </field>
+      <glib:signal name="applied" version="0.4">
+        <doc xml:whitespace="preserve">The ::apply signal is emitted each time the behaviour is applied
+to an actor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the actor the behaviour was applied to.</doc>
+            <type name="Actor"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="removed" version="0.4">
+        <doc xml:whitespace="preserve">The ::removed signal is emitted each time a behaviour is not applied
+to an actor anymore.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the removed actor</doc>
+            <type name="Actor"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="BehaviourClass"
+            c:type="ClutterBehaviourClass"
+            glib:is-gtype-struct-for="Behaviour"
+            version="0.2"
+            deprecated="1.6">
+      <doc xml:whitespace="preserve">Base class for behaviours.</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="alpha_notify">
+        <callback name="alpha_notify">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="behave" transfer-ownership="none">
+              <type name="Behaviour" c:type="ClutterBehaviour*"/>
+            </parameter>
+            <parameter name="alpha_value" transfer-ownership="none">
+              <type name="gdouble" c:type="gdouble"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="applied">
+        <callback name="applied">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="behave" transfer-ownership="none">
+              <type name="Behaviour" c:type="ClutterBehaviour*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="removed">
+        <callback name="removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="behave" transfer-ownership="none">
+              <type name="Behaviour" c:type="ClutterBehaviour*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_behaviour1" introspectable="0">
+        <callback name="_clutter_behaviour1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_behaviour2" introspectable="0">
+        <callback name="_clutter_behaviour2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_behaviour3" introspectable="0">
+        <callback name="_clutter_behaviour3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_behaviour4" introspectable="0">
+        <callback name="_clutter_behaviour4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_behaviour5" introspectable="0">
+        <callback name="_clutter_behaviour5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_behaviour6" introspectable="0">
+        <callback name="_clutter_behaviour6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="BehaviourDepth"
+           c:symbol-prefix="behaviour_depth"
+           c:type="ClutterBehaviourDepth"
+           version="0.2"
+           deprecated="Use clutter_actor_animate() with #ClutterActor:depth"
+           deprecated-version="1.6"
+           parent="Behaviour"
+           glib:type-name="ClutterBehaviourDepth"
+           glib:get-type="clutter_behaviour_depth_get_type"
+           glib:type-struct="BehaviourDepthClass">
+      <doc xml:whitespace="preserve">The #ClutterBehaviourDepth structure contains only private data
+and should be accessed using the provided API
+instead.</doc>
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_behaviour_depth_new"
+                   version="0.4"
+                   deprecated="1.6">
+        <doc xml:whitespace="preserve">Creates a new #ClutterBehaviourDepth which can be used to control
+the ClutterActor:depth property of a set of #ClutterActor&lt;!-- --&gt;s.
+If @alpha is not %NULL, the #ClutterBehaviour will take ownership
+of the #ClutterAlpha instance. In the case when @alpha is %NULL,
+it can be set later with clutter_behaviour_set_alpha().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created behaviour</doc>
+          <type name="Behaviour" c:type="ClutterBehaviour*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterAlpha instance, or %NULL</doc>
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="depth_start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">initial value of the depth</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="depth_end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">final value of the depth</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_bounds"
+              c:identifier="clutter_behaviour_depth_get_bounds"
+              version="0.6"
+              deprecated="1.6">
+        <doc xml:whitespace="preserve">Gets the boundaries of the @behaviour</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="depth_start"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the initial depth value, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="depth_end"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the final depth value, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_bounds"
+              c:identifier="clutter_behaviour_depth_set_bounds"
+              version="0.6"
+              deprecated="1.6">
+        <doc xml:whitespace="preserve">Sets the boundaries of the @behaviour.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="depth_start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">initial value of the depth</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="depth_end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">final value of the depth</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="depth-end"
+                version="0.4"
+                deprecated="1.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">End depth level to apply to the actors.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="depth-start"
+                version="0.4"
+                deprecated="1.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Start depth level to apply to the actors.</doc>
+        <type name="gint"/>
+      </property>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="Behaviour" c:type="ClutterBehaviour"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="BehaviourDepthPrivate"
+              c:type="ClutterBehaviourDepthPrivate*"/>
+      </field>
+    </class>
+    <record name="BehaviourDepthClass"
+            c:type="ClutterBehaviourDepthClass"
+            glib:is-gtype-struct-for="BehaviourDepth"
+            version="0.2"
+            deprecated="1.6">
+      <doc xml:whitespace="preserve">The #ClutterBehaviourDepthClass structure contains only private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="BehaviourClass" c:type="ClutterBehaviourClass"/>
+      </field>
+    </record>
+    <record name="BehaviourDepthPrivate"
+            c:type="ClutterBehaviourDepthPrivate"
+            disguised="1">
+    </record>
+    <class name="BehaviourEllipse"
+           c:symbol-prefix="behaviour_ellipse"
+           c:type="ClutterBehaviourEllipse"
+           version="0.4"
+           deprecated="1.6"
+           parent="Behaviour"
+           glib:type-name="ClutterBehaviourEllipse"
+           glib:get-type="clutter_behaviour_ellipse_get_type"
+           glib:type-struct="BehaviourEllipseClass">
+      <doc xml:whitespace="preserve">The #ClutterBehaviourEllipse struct contains only private data
+and should be accessed using the provided API</doc>
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_behaviour_ellipse_new"
+                   version="0.4">
+        <doc xml:whitespace="preserve">Creates a behaviour that drives actors along an elliptical path with
+given center, width and height; the movement starts at @start
+degrees (with 0 corresponding to 12 o'clock) and ends at @end
+degrees. Angles greated than 360 degrees get clamped to the canonical
+interval &lt;0, 360); if @start is equal to @end, the behaviour will
+rotate by exacly 360 degrees.
+If @alpha is not %NULL, the #ClutterBehaviour will take ownership
+of the #ClutterAlpha instance. In the case when @alpha is %NULL,
+it can be set later with clutter_behaviour_set_alpha().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #ClutterBehaviourEllipse</doc>
+          <type name="Behaviour" c:type="ClutterBehaviour*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterAlpha instance, or %NULL</doc>
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">x coordinace of the center</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">y coordiance of the center</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">width of the ellipse</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">height of the ellipse</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="direction" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#ClutterRotateDirection of rotation</doc>
+            <type name="RotateDirection" c:type="ClutterRotateDirection"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">angle in degrees at which movement starts, between 0 and 360</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">angle in degrees at which movement ends, between 0 and 360</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_angle_end"
+              c:identifier="clutter_behaviour_ellipse_get_angle_end"
+              version="0.4">
+        <doc xml:whitespace="preserve">Gets the at which movements ends.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">angle in degrees</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_angle_start"
+              c:identifier="clutter_behaviour_ellipse_get_angle_start"
+              version="0.6">
+        <doc xml:whitespace="preserve">Gets the angle at which movements starts.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">angle in degrees</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_angle_tilt"
+              c:identifier="clutter_behaviour_ellipse_get_angle_tilt"
+              version="0.4">
+        <doc xml:whitespace="preserve">Gets the tilt of the ellipse around the center in the given axis.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">angle in degrees.</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="axis" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterRotateAxis</doc>
+            <type name="RotateAxis" c:type="ClutterRotateAxis"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_center"
+              c:identifier="clutter_behaviour_ellipse_get_center"
+              version="0.4">
+        <doc xml:whitespace="preserve">Gets the center of the elliptical path path.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the X coordinate of the center, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the Y coordinate of the center, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_direction"
+              c:identifier="clutter_behaviour_ellipse_get_direction"
+              version="0.4">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterRotateDirection used by the ellipse behaviour.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the rotation direction</doc>
+          <type name="RotateDirection" c:type="ClutterRotateDirection"/>
+        </return-value>
+      </method>
+      <method name="get_height"
+              c:identifier="clutter_behaviour_ellipse_get_height"
+              version="0.4">
+        <doc xml:whitespace="preserve">Gets the height of the elliptical path.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the height of the path</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_tilt"
+              c:identifier="clutter_behaviour_ellipse_get_tilt"
+              version="0.4">
+        <doc xml:whitespace="preserve">Gets the tilt of the ellipse around the center in Y axis.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle_tilt_x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for tilt angle on the X axis, or %NULL.</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="angle_tilt_y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for tilt angle on the Y axis, or %NULL.</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="angle_tilt_z"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for tilt angle on the Z axis, or %NULL.</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_width"
+              c:identifier="clutter_behaviour_ellipse_get_width"
+              version="0.4">
+        <doc xml:whitespace="preserve">Gets the width of the elliptical path.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the width of the path</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_angle_end"
+              c:identifier="clutter_behaviour_ellipse_set_angle_end"
+              version="0.4">
+        <doc xml:whitespace="preserve">Sets the angle at which movement ends; angles &gt;= 360 degress get clamped
+to the canonical interval &lt;0, 360).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle_end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">angle at which movement ends in degrees, between 0 and 360.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_angle_start"
+              c:identifier="clutter_behaviour_ellipse_set_angle_start"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets the angle at which movement starts; angles &gt;= 360 degress get clamped
+to the canonical interval &lt;0, 360).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle_start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">angle at which movement starts in degrees, between 0 and 360.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_angle_tilt"
+              c:identifier="clutter_behaviour_ellipse_set_angle_tilt"
+              version="0.4">
+        <doc xml:whitespace="preserve">Sets the angle at which the ellipse should be tilted around it's center.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="axis" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterRotateAxis</doc>
+            <type name="RotateAxis" c:type="ClutterRotateAxis"/>
+          </parameter>
+          <parameter name="angle_tilt" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tilt of the elipse around the center in the given axis in degrees.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_center"
+              c:identifier="clutter_behaviour_ellipse_set_center"
+              version="0.4">
+        <doc xml:whitespace="preserve">Sets the center of the elliptical path to the point represented by knot.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">x coordinace of centre</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">y coordinace of centre</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_direction"
+              c:identifier="clutter_behaviour_ellipse_set_direction"
+              version="0.4">
+        <doc xml:whitespace="preserve">Sets the rotation direction used by the ellipse behaviour.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the rotation direction</doc>
+            <type name="RotateDirection" c:type="ClutterRotateDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_height"
+              c:identifier="clutter_behaviour_ellipse_set_height"
+              version="0.4">
+        <doc xml:whitespace="preserve">Sets the height of the elliptical path.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">height of the ellipse</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tilt"
+              c:identifier="clutter_behaviour_ellipse_set_tilt"
+              version="0.4">
+        <doc xml:whitespace="preserve">Sets the angles at which the ellipse should be tilted around it's center.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle_tilt_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tilt of the elipse around the center in X axis in degrees.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="angle_tilt_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tilt of the elipse around the center in Y axis in degrees.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="angle_tilt_z" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tilt of the elipse around the center in Z axis in degrees.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_width"
+              c:identifier="clutter_behaviour_ellipse_set_width"
+              version="0.4">
+        <doc xml:whitespace="preserve">Sets the width of the elliptical path.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">width of the ellipse</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="angle-end"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The final angle to where the rotation should end.</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="angle-start"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The initial angle from where the rotation should start.</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="angle-tilt-x"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The tilt angle for the rotation around center in X axis</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="angle-tilt-y"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The tilt angle for the rotation around center in Y axis</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="angle-tilt-z"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The tilt angle for the rotation on the Z axis</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="center"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The center of the ellipse.</doc>
+        <type name="Knot"/>
+      </property>
+      <property name="direction"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The direction of the rotation.</doc>
+        <type name="RotateDirection"/>
+      </property>
+      <property name="height"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Height of the ellipse, in pixels</doc>
+        <type name="gint"/>
+      </property>
+      <property name="width"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Width of the ellipse, in pixels</doc>
+        <type name="gint"/>
+      </property>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="Behaviour" c:type="ClutterBehaviour"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="BehaviourEllipsePrivate"
+              c:type="ClutterBehaviourEllipsePrivate*"/>
+      </field>
+    </class>
+    <record name="BehaviourEllipseClass"
+            c:type="ClutterBehaviourEllipseClass"
+            glib:is-gtype-struct-for="BehaviourEllipse"
+            version="0.4"
+            deprecated="1.6">
+      <doc xml:whitespace="preserve">The #ClutterBehaviourEllipseClass struct contains only private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="BehaviourClass" c:type="ClutterBehaviourClass"/>
+      </field>
+    </record>
+    <record name="BehaviourEllipsePrivate"
+            c:type="ClutterBehaviourEllipsePrivate"
+            disguised="1">
+    </record>
+    <callback name="BehaviourForeachFunc"
+              c:type="ClutterBehaviourForeachFunc"
+              version="0.2"
+              deprecated="1.6">
+      <doc xml:whitespace="preserve">This function is passed to clutter_behaviour_actors_foreach() and
+will be called for each actor driven by @behaviour.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="behaviour" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #ClutterBehaviour</doc>
+          <type name="Behaviour" c:type="ClutterBehaviour*"/>
+        </parameter>
+        <parameter name="actor" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an actor driven by @behaviour</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">optional data passed to the function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="BehaviourOpacity"
+           c:symbol-prefix="behaviour_opacity"
+           c:type="ClutterBehaviourOpacity"
+           version="0.2"
+           deprecated="Use clutter_actor_animate() and #ClutterActor:opacity"
+           deprecated-version="1.6"
+           parent="Behaviour"
+           glib:type-name="ClutterBehaviourOpacity"
+           glib:get-type="clutter_behaviour_opacity_get_type"
+           glib:type-struct="BehaviourOpacityClass">
+      <doc xml:whitespace="preserve">The #ClutterBehaviourOpacity structure contains only private data and
+should be accessed using the provided API
+instead.</doc>
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_behaviour_opacity_new"
+                   version="0.2"
+                   deprecated="1.6">
+        <doc xml:whitespace="preserve">Creates a new #ClutterBehaviourOpacity object, driven by @alpha
+which controls the opacity property of every actor, making it
+change in the interval between @opacity_start and @opacity_end.
+If @alpha is not %NULL, the #ClutterBehaviour will take ownership
+of the #ClutterAlpha instance. In the case when @alpha is %NULL,
+it can be set later with clutter_behaviour_set_alpha().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #ClutterBehaviourOpacity</doc>
+          <type name="Behaviour" c:type="ClutterBehaviour*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterAlpha instance, or %NULL</doc>
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="opacity_start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">minimum level of opacity</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="opacity_end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">maximum level of opacity</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_bounds"
+              c:identifier="clutter_behaviour_opacity_get_bounds"
+              version="0.6"
+              deprecated="1.6">
+        <doc xml:whitespace="preserve">Gets the initial and final levels of the opacity applied by @behaviour
+on each actor it controls.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="opacity_start"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the minimum level of opacity, or %NULL</doc>
+            <type name="guint8" c:type="guint8*"/>
+          </parameter>
+          <parameter name="opacity_end"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the maximum level of opacity, or %NULL</doc>
+            <type name="guint8" c:type="guint8*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_bounds"
+              c:identifier="clutter_behaviour_opacity_set_bounds"
+              version="0.6"
+              deprecated="1.6">
+        <doc xml:whitespace="preserve">Sets the initial and final levels of the opacity applied by @behaviour
+on each actor it controls.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="opacity_start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">minimum level of opacity</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="opacity_end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">maximum level of opacity</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="opacity-end"
+                version="0.2"
+                deprecated="1.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Final opacity level of the behaviour.</doc>
+        <type name="guint"/>
+      </property>
+      <property name="opacity-start"
+                version="0.2"
+                deprecated="1.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Initial opacity level of the behaviour.</doc>
+        <type name="guint"/>
+      </property>
+      <field name="parent" readable="0" private="1">
+        <type name="Behaviour" c:type="ClutterBehaviour"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="BehaviourOpacityPrivate"
+              c:type="ClutterBehaviourOpacityPrivate*"/>
+      </field>
+    </class>
+    <record name="BehaviourOpacityClass"
+            c:type="ClutterBehaviourOpacityClass"
+            glib:is-gtype-struct-for="BehaviourOpacity"
+            version="0.2"
+            deprecated="1.6">
+      <doc xml:whitespace="preserve">The #ClutterBehaviourOpacityClass structure contains only private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="BehaviourClass" c:type="ClutterBehaviourClass"/>
+      </field>
+    </record>
+    <record name="BehaviourOpacityPrivate"
+            c:type="ClutterBehaviourOpacityPrivate"
+            disguised="1">
+    </record>
+    <class name="BehaviourPath"
+           c:symbol-prefix="behaviour_path"
+           c:type="ClutterBehaviourPath"
+           version="0.2"
+           deprecated="Use #ClutterPathConstraint and clutter_actor_animate()"
+           deprecated-version="1.6"
+           parent="Behaviour"
+           glib:type-name="ClutterBehaviourPath"
+           glib:get-type="clutter_behaviour_path_get_type"
+           glib:type-struct="BehaviourPathClass">
+      <doc xml:whitespace="preserve">The #ClutterBehaviourPath structure contains only private data
+and should be accessed using the provided API
+instead.</doc>
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_behaviour_path_new"
+                   version="0.2"
+                   deprecated="1.6">
+        <doc xml:whitespace="preserve">Creates a new path behaviour. You can use this behaviour to drive
+actors along the nodes of a path, described by @path.
+This will claim the floating reference on the #ClutterPath so you
+do not need to unref if it.
+If @alpha is not %NULL, the #ClutterBehaviour will take ownership
+of the #ClutterAlpha instance. In the case when @alpha is %NULL,
+it can be set later with clutter_behaviour_set_alpha().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #ClutterBehaviour</doc>
+          <type name="Behaviour" c:type="ClutterBehaviour*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterAlpha instance, or %NULL</doc>
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterPath or %NULL for an empty path</doc>
+            <type name="Path" c:type="ClutterPath*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_description"
+                   c:identifier="clutter_behaviour_path_new_with_description"
+                   version="1.0"
+                   deprecated="1.6">
+        <doc xml:whitespace="preserve">Creates a new path behaviour using the path described by @desc. See
+clutter_path_add_string() for a description of the format.
+If @alpha is not %NULL, the #ClutterBehaviour will take ownership
+of the #ClutterAlpha instance. In the case when @alpha is %NULL,
+it can be set later with clutter_behaviour_set_alpha().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #ClutterBehaviour</doc>
+          <type name="Behaviour" c:type="ClutterBehaviour*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterAlpha instance, or %NULL</doc>
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="desc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string description of the path</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_knots"
+                   c:identifier="clutter_behaviour_path_new_with_knots"
+                   version="1.0"
+                   deprecated="1.6">
+        <doc xml:whitespace="preserve">Creates a new path behaviour that will make the actors visit all of
+the given knots in order with straight lines in between.
+A path will be created where the first knot is used in a
+%CLUTTER_PATH_MOVE_TO and the subsequent knots are used in
+%CLUTTER_PATH_LINE_TO&lt;!-- --&gt;s.
+If @alpha is not %NULL, the #ClutterBehaviour will take ownership
+of the #ClutterAlpha instance. In the case when @alpha is %NULL,
+it can be set later with clutter_behaviour_set_alpha().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #ClutterBehaviour</doc>
+          <type name="Behaviour" c:type="ClutterBehaviour*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterAlpha instance, or %NULL</doc>
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="knots" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of #ClutterKnot&lt;!-- --&gt;s</doc>
+            <type name="Knot" c:type="ClutterKnot*"/>
+          </parameter>
+          <parameter name="n_knots" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of entries in @knots</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="knot_reached">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="knot_num" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_path"
+              c:identifier="clutter_behaviour_path_get_path"
+              version="1.0"
+              deprecated="1.6">
+        <doc xml:whitespace="preserve">Get the current path of the behaviour</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the path</doc>
+          <type name="Path" c:type="ClutterPath*"/>
+        </return-value>
+      </method>
+      <method name="set_path"
+              c:identifier="clutter_behaviour_path_set_path"
+              version="1.0"
+              deprecated="1.6">
+        <doc xml:whitespace="preserve">Change the path that the actors will follow. This will take the
+floating reference on the #ClutterPath so you do not need to unref
+it.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new path to follow</doc>
+            <type name="Path" c:type="ClutterPath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="path" writable="1" transfer-ownership="none">
+        <type name="Path"/>
+      </property>
+      <field name="parent" readable="0" private="1">
+        <type name="Behaviour" c:type="ClutterBehaviour"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="BehaviourPathPrivate"
+              c:type="ClutterBehaviourPathPrivate*"/>
+      </field>
+      <glib:signal name="knot-reached" version="0.2" deprecated="1.6">
+        <doc xml:whitespace="preserve">This signal is emitted each time a node defined inside the path
+is reached.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="knot_num" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of the #ClutterKnot reached</doc>
+            <type name="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="BehaviourPathClass"
+            c:type="ClutterBehaviourPathClass"
+            glib:is-gtype-struct-for="BehaviourPath"
+            version="0.2"
+            deprecated="1.6">
+      <doc xml:whitespace="preserve">The #ClutterBehaviourPathClass struct contains only private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="BehaviourClass" c:type="ClutterBehaviourClass"/>
+      </field>
+      <field name="knot_reached">
+        <callback name="knot_reached">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="pathb" transfer-ownership="none">
+              <type name="BehaviourPath" c:type="ClutterBehaviourPath*"/>
+            </parameter>
+            <parameter name="knot_num" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_path_1" introspectable="0">
+        <callback name="_clutter_path_1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_path_2" introspectable="0">
+        <callback name="_clutter_path_2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_path_3" introspectable="0">
+        <callback name="_clutter_path_3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_path_4" introspectable="0">
+        <callback name="_clutter_path_4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="BehaviourPathPrivate"
+            c:type="ClutterBehaviourPathPrivate"
+            disguised="1">
+    </record>
+    <record name="BehaviourPrivate"
+            c:type="ClutterBehaviourPrivate"
+            disguised="1">
+    </record>
+    <class name="BehaviourRotate"
+           c:symbol-prefix="behaviour_rotate"
+           c:type="ClutterBehaviourRotate"
+           version="0.4"
+           deprecated="Use clutter_actor_animate() instead."
+           deprecated-version="1.6"
+           parent="Behaviour"
+           glib:type-name="ClutterBehaviourRotate"
+           glib:get-type="clutter_behaviour_rotate_get_type"
+           glib:type-struct="BehaviourRotateClass">
+      <doc xml:whitespace="preserve">The #ClutterBehaviourRotate struct contains only private data and
+should be accessed using the provided API</doc>
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_behaviour_rotate_new"
+                   version="0.4">
+        <doc xml:whitespace="preserve">Creates a new #ClutterBehaviourRotate. This behaviour will rotate actors
+bound to it on @axis, following @direction, between @angle_start and
+&lt;0, 360), if angle_start == angle_end, the behaviour will carry out a
+single rotation of 360 degrees.
+If @alpha is not %NULL, the #ClutterBehaviour will take ownership
+of the #ClutterAlpha instance. In the case when @alpha is %NULL,
+it can be set later with clutter_behaviour_set_alpha().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #ClutterBehaviourRotate.</doc>
+          <type name="Behaviour" c:type="ClutterBehaviour*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterAlpha instance, or %NULL</doc>
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="axis" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the rotation axis</doc>
+            <type name="RotateAxis" c:type="ClutterRotateAxis"/>
+          </parameter>
+          <parameter name="direction" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the rotation direction</doc>
+            <type name="RotateDirection" c:type="ClutterRotateDirection"/>
+          </parameter>
+          <parameter name="angle_start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the starting angle in degrees, between 0 and 360.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="angle_end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the final angle in degrees, between 0 and 360.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_axis"
+              c:identifier="clutter_behaviour_rotate_get_axis"
+              version="0.4">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterRotateAxis used by the rotate behaviour.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the rotation axis</doc>
+          <type name="RotateAxis" c:type="ClutterRotateAxis"/>
+        </return-value>
+      </method>
+      <method name="get_bounds"
+              c:identifier="clutter_behaviour_rotate_get_bounds"
+              version="0.4">
+        <doc xml:whitespace="preserve">Retrieves the rotation boundaries of the rotate behaviour.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle_start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return value for the initial angle</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="angle_end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return value for the final angle</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_center"
+              c:identifier="clutter_behaviour_rotate_get_center"
+              version="0.4">
+        <doc xml:whitespace="preserve">Retrieves the center of rotation set using
+clutter_behaviour_rotate_set_center().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the X center of rotation</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the Y center of rotation</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="z"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the Z center of rotation</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_direction"
+              c:identifier="clutter_behaviour_rotate_get_direction"
+              version="0.4">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterRotateDirection used by the rotate behaviour.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the rotation direction</doc>
+          <type name="RotateDirection" c:type="ClutterRotateDirection"/>
+        </return-value>
+      </method>
+      <method name="set_axis"
+              c:identifier="clutter_behaviour_rotate_set_axis"
+              version="0.4">
+        <doc xml:whitespace="preserve">Sets the axis used by the rotate behaviour.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="axis" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterRotateAxis</doc>
+            <type name="RotateAxis" c:type="ClutterRotateAxis"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_bounds"
+              c:identifier="clutter_behaviour_rotate_set_bounds"
+              version="0.4">
+        <doc xml:whitespace="preserve">Sets the initial and final angles of a rotation behaviour; angles &gt;= 360
+degrees get clamped to the canonical interval &lt;0, 360).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle_start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">initial angle in degrees, between 0 and 360.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="angle_end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">final angle in degrees, between 0 and 360.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_center"
+              c:identifier="clutter_behaviour_rotate_set_center"
+              version="0.4">
+        <doc xml:whitespace="preserve">Sets the center of rotation. The coordinates are relative to the plane
+normal to the rotation axis set with clutter_behaviour_rotate_set_axis().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X axis center of rotation</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y axis center of rotation</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="z" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Z axis center of rotation</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_direction"
+              c:identifier="clutter_behaviour_rotate_set_direction"
+              version="0.4">
+        <doc xml:whitespace="preserve">Sets the rotation direction used by the rotate behaviour.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the rotation direction</doc>
+            <type name="RotateDirection" c:type="ClutterRotateDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="angle-end"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The final angle to where the rotation should end.</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="angle-start"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The initial angle from whence the rotation should start.</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="axis"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The axis of rotation.</doc>
+        <type name="RotateAxis"/>
+      </property>
+      <property name="center-x"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The x center of rotation.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="center-y"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The y center of rotation.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="center-z"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The z center of rotation.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="direction"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The direction of the rotation.</doc>
+        <type name="RotateDirection"/>
+      </property>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="Behaviour" c:type="ClutterBehaviour"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="BehaviourRotatePrivate"
+              c:type="ClutterBehaviourRotatePrivate*"/>
+      </field>
+    </class>
+    <record name="BehaviourRotateClass"
+            c:type="ClutterBehaviourRotateClass"
+            glib:is-gtype-struct-for="BehaviourRotate"
+            version="0.4"
+            deprecated="1.6">
+      <doc xml:whitespace="preserve">The #ClutterBehaviourRotateClass struct contains only private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="BehaviourClass" c:type="ClutterBehaviourClass"/>
+      </field>
+    </record>
+    <record name="BehaviourRotatePrivate"
+            c:type="ClutterBehaviourRotatePrivate"
+            disguised="1">
+    </record>
+    <class name="BehaviourScale"
+           c:symbol-prefix="behaviour_scale"
+           c:type="ClutterBehaviourScale"
+           version="0.2"
+           deprecated="Use clutter_actor_animate() with #ClutterActor:x-scale"
+           deprecated-version="1.6"
+           parent="Behaviour"
+           glib:type-name="ClutterBehaviourScale"
+           glib:get-type="clutter_behaviour_scale_get_type"
+           glib:type-struct="BehaviourScaleClass">
+      <doc xml:whitespace="preserve">The #ClutterBehaviourScale struct contains only private data and
+should be accessed using the provided API
+and #ClutterActor:y-scale instead.</doc>
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_behaviour_scale_new"
+                   version="0.2"
+                   deprecated="1.6">
+        <doc xml:whitespace="preserve">Creates a new  #ClutterBehaviourScale instance.
+If @alpha is not %NULL, the #ClutterBehaviour will take ownership
+of the #ClutterAlpha instance. In the case when @alpha is %NULL,
+it can be set later with clutter_behaviour_set_alpha().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #ClutterBehaviourScale</doc>
+          <type name="Behaviour" c:type="ClutterBehaviour*"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterAlpha instance, or %NULL</doc>
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </parameter>
+          <parameter name="x_scale_start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">initial scale factor on the X axis</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="y_scale_start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">initial scale factor on the Y axis</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="x_scale_end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">final scale factor on the X axis</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="y_scale_end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">final scale factor on the Y axis</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_bounds"
+              c:identifier="clutter_behaviour_scale_get_bounds"
+              version="0.4"
+              deprecated="1.6">
+        <doc xml:whitespace="preserve">Retrieves the bounds used by scale behaviour.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_scale_start"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the initial scale factor on the X axis, or %NULL</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="y_scale_start"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the initial scale factor on the Y axis, or %NULL</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="x_scale_end"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the final scale factor on the X axis, or %NULL</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="y_scale_end"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the final scale factor on the Y axis, or %NULL</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_bounds"
+              c:identifier="clutter_behaviour_scale_set_bounds"
+              version="0.6"
+              deprecated="1.6">
+        <doc xml:whitespace="preserve">Sets the bounds used by scale behaviour.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_scale_start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">initial scale factor on the X axis</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="y_scale_start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">initial scale factor on the Y axis</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="x_scale_end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">final scale factor on the X axis</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="y_scale_end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">final scale factor on the Y axis</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="x-scale-end"
+                version="0.6"
+                deprecated="1.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The final scaling factor on the X axis for the actors.</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="x-scale-start"
+                version="0.6"
+                deprecated="1.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The initial scaling factor on the X axis for the actors.</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="y-scale-end"
+                version="0.6"
+                deprecated="1.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The final scaling factor on the Y axis for the actors.</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="y-scale-start"
+                version="0.6"
+                deprecated="1.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The initial scaling factor on the Y axis for the actors.</doc>
+        <type name="gdouble"/>
+      </property>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="Behaviour" c:type="ClutterBehaviour"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="BehaviourScalePrivate"
+              c:type="ClutterBehaviourScalePrivate*"/>
+      </field>
+    </class>
+    <record name="BehaviourScaleClass"
+            c:type="ClutterBehaviourScaleClass"
+            glib:is-gtype-struct-for="BehaviourScale"
+            version="0.2"
+            deprecated="1.6">
+      <doc xml:whitespace="preserve">The #ClutterBehaviourScaleClass struct contains only private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="BehaviourClass" c:type="ClutterBehaviourClass"/>
+      </field>
+    </record>
+    <record name="BehaviourScalePrivate"
+            c:type="ClutterBehaviourScalePrivate"
+            disguised="1">
+    </record>
+    <enumeration name="BinAlignment"
+                 version="1.2"
+                 glib:type-name="ClutterBinAlignment"
+                 glib:get-type="clutter_bin_alignment_get_type"
+                 c:type="ClutterBinAlignment">
+      <doc xml:whitespace="preserve">The alignment policies available on each axis for #ClutterBinLayout</doc>
+      <member name="fixed"
+              value="0"
+              c:identifier="CLUTTER_BIN_ALIGNMENT_FIXED"
+              glib:nick="fixed"/>
+      <member name="fill"
+              value="1"
+              c:identifier="CLUTTER_BIN_ALIGNMENT_FILL"
+              glib:nick="fill"/>
+      <member name="start"
+              value="2"
+              c:identifier="CLUTTER_BIN_ALIGNMENT_START"
+              glib:nick="start"/>
+      <member name="end"
+              value="3"
+              c:identifier="CLUTTER_BIN_ALIGNMENT_END"
+              glib:nick="end"/>
+      <member name="center"
+              value="4"
+              c:identifier="CLUTTER_BIN_ALIGNMENT_CENTER"
+              glib:nick="center"/>
+    </enumeration>
+    <class name="BinLayout"
+           c:symbol-prefix="bin_layout"
+           c:type="ClutterBinLayout"
+           version="1.2"
+           parent="LayoutManager"
+           glib:type-name="ClutterBinLayout"
+           glib:get-type="clutter_bin_layout_get_type"
+           glib:type-struct="BinLayoutClass">
+      <doc xml:whitespace="preserve">The #ClutterBinLayout structure contains only private data
+and should be accessed using the provided API</doc>
+      <constructor name="new"
+                   c:identifier="clutter_bin_layout_new"
+                   version="1.2">
+        <doc xml:whitespace="preserve">Creates a new #ClutterBinLayout layout manager</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created layout manager</doc>
+          <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the default alignment policy to be used on the horizontal axis</doc>
+            <type name="BinAlignment" c:type="ClutterBinAlignment"/>
+          </parameter>
+          <parameter name="y_align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the default alignment policy to be used on the vertical axis</doc>
+            <type name="BinAlignment" c:type="ClutterBinAlignment"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="add" c:identifier="clutter_bin_layout_add" version="1.2">
+        <doc xml:whitespace="preserve">Adds a #ClutterActor to the container using @self and
+sets the alignment policies for it
+This function is equivalent to clutter_container_add_actor()
+and clutter_layout_manager_child_set_property() but it does not
+require a pointer to the #ClutterContainer associated to the
+#ClutterBinLayout</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">horizontal alignment policy for @child</doc>
+            <type name="BinAlignment" c:type="ClutterBinAlignment"/>
+          </parameter>
+          <parameter name="y_align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">vertical alignment policy for @child</doc>
+            <type name="BinAlignment" c:type="ClutterBinAlignment"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_alignment"
+              c:identifier="clutter_bin_layout_get_alignment"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the horizontal and vertical alignment policies for
+a child of @self
+If @child is %NULL the default alignment policies will be returned
+instead</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a child of @container</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_align"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the horizontal alignment policy</doc>
+            <type name="BinAlignment" c:type="ClutterBinAlignment*"/>
+          </parameter>
+          <parameter name="y_align"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the vertical alignment policy</doc>
+            <type name="BinAlignment" c:type="ClutterBinAlignment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_alignment"
+              c:identifier="clutter_bin_layout_set_alignment"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets the horizontal and vertical alignment policies to be applied
+to a @child of @self
+If @child is %NULL then the @x_align and @y_align values will
+be set as the default alignment policies</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a child of @container</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the horizontal alignment policy to be used for the @child inside @container</doc>
+            <type name="BinAlignment" c:type="ClutterBinAlignment"/>
+          </parameter>
+          <parameter name="y_align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the vertical aligment policy to be used on the @child inside @container</doc>
+            <type name="BinAlignment" c:type="ClutterBinAlignment"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="x-align"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The default horizontal alignment policy for actors managed
+by the #ClutterBinLayout</doc>
+        <type name="BinAlignment"/>
+      </property>
+      <property name="y-align"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The default vertical alignment policy for actors managed
+by the #ClutterBinLayout</doc>
+        <type name="BinAlignment"/>
+      </property>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="LayoutManager" c:type="ClutterLayoutManager"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="BinLayoutPrivate" c:type="ClutterBinLayoutPrivate*"/>
+      </field>
+    </class>
+    <record name="BinLayoutClass"
+            c:type="ClutterBinLayoutClass"
+            glib:is-gtype-struct-for="BinLayout"
+            version="1.2">
+      <doc xml:whitespace="preserve">The #ClutterBinLayoutClass structure contains only private
+data and should be accessed using the provided API</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="LayoutManagerClass" c:type="ClutterLayoutManagerClass"/>
+      </field>
+    </record>
+    <record name="BinLayoutPrivate"
+            c:type="ClutterBinLayoutPrivate"
+            disguised="1">
+    </record>
+    <class name="BindConstraint"
+           c:symbol-prefix="bind_constraint"
+           c:type="ClutterBindConstraint"
+           version="1.4"
+           parent="Constraint"
+           glib:type-name="ClutterBindConstraint"
+           glib:get-type="clutter_bind_constraint_get_type"
+           glib:type-struct="BindConstraintClass">
+      <doc xml:whitespace="preserve">&lt;structname&gt;ClutterBindConstraint&lt;/structname&gt; is an opaque structure
+whose members cannot be directly accessed</doc>
+      <constructor name="new"
+                   c:identifier="clutter_bind_constraint_new"
+                   version="1.4">
+        <doc xml:whitespace="preserve">Creates a new constraint, binding a #ClutterActor's position to
+the given @coordinate of the position of @source</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterBindConstraint</doc>
+          <type name="Constraint" c:type="ClutterConstraint*"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the #ClutterActor to use as the source of the binding, or %NULL</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="coordinate" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the coordinate to bind</doc>
+            <type name="BindCoordinate" c:type="ClutterBindCoordinate"/>
+          </parameter>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the offset to apply to the binding, in pixels</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_coordinate"
+              c:identifier="clutter_bind_constraint_get_coordinate"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the bound coordinate of the constraint</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the bound coordinate</doc>
+          <type name="BindCoordinate" c:type="ClutterBindCoordinate"/>
+        </return-value>
+      </method>
+      <method name="get_offset"
+              c:identifier="clutter_bind_constraint_get_offset"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the offset set using clutter_bind_constraint_set_offset()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the offset, in pixels</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_source"
+              c:identifier="clutter_bind_constraint_get_source"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterActor set using clutter_bind_constraint_set_source()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to the source actor</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="set_coordinate"
+              c:identifier="clutter_bind_constraint_set_coordinate"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the coordinate to bind in the constraint</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="coordinate" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the coordinate to bind</doc>
+            <type name="BindCoordinate" c:type="ClutterBindCoordinate"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_offset"
+              c:identifier="clutter_bind_constraint_set_offset"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the offset to be applied to the constraint</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the offset to apply, in pixels</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_source"
+              c:identifier="clutter_bind_constraint_set_source"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the source #ClutterActor for the constraint</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterActor, or %NULL to unset the source</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="coordinate"
+                version="1.4"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The coordinate to be bound</doc>
+        <type name="BindCoordinate"/>
+      </property>
+      <property name="offset"
+                version="1.4"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The offset, in pixels, to be applied to the binding</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="source"
+                version="1.4"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #ClutterActor used as the source for the binding</doc>
+        <type name="Actor"/>
+      </property>
+    </class>
+    <record name="BindConstraintClass"
+            c:type="ClutterBindConstraintClass"
+            disguised="1"
+            glib:is-gtype-struct-for="BindConstraint">
+    </record>
+    <enumeration name="BindCoordinate"
+                 version="1.4"
+                 glib:type-name="ClutterBindCoordinate"
+                 glib:get-type="clutter_bind_coordinate_get_type"
+                 c:type="ClutterBindCoordinate">
+      <doc xml:whitespace="preserve">Specifies which property should be used in a binding</doc>
+      <member name="x" value="0" c:identifier="CLUTTER_BIND_X" glib:nick="x"/>
+      <member name="y" value="1" c:identifier="CLUTTER_BIND_Y" glib:nick="y"/>
+      <member name="width"
+              value="2"
+              c:identifier="CLUTTER_BIND_WIDTH"
+              glib:nick="width"/>
+      <member name="height"
+              value="3"
+              c:identifier="CLUTTER_BIND_HEIGHT"
+              glib:nick="height"/>
+      <member name="position"
+              value="4"
+              c:identifier="CLUTTER_BIND_POSITION"
+              glib:nick="position"/>
+      <member name="size"
+              value="5"
+              c:identifier="CLUTTER_BIND_SIZE"
+              glib:nick="size"/>
+    </enumeration>
+    <callback name="BindingActionFunc"
+              c:type="ClutterBindingActionFunc"
+              version="1.0">
+      <doc xml:whitespace="preserve">The prototype for the callback function registered with
+clutter_binding_pool_install_action() and invoked by
+clutter_binding_pool_activate().
+binding has been handled, and return %FALSE otherwise</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the function should return %TRUE if the key</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="gobject" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GObject</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="action_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the action</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="key_val" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the key symbol</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="modifiers" transfer-ownership="none">
+          <doc xml:whitespace="preserve">bitmask of the modifier flags</doc>
+          <type name="ModifierType" c:type="ClutterModifierType"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="BindingPool"
+           c:symbol-prefix="binding_pool"
+           c:type="ClutterBindingPool"
+           version="1.0"
+           parent="GObject.Object"
+           glib:type-name="ClutterBindingPool"
+           glib:get-type="clutter_binding_pool_get_type"
+           glib:type-struct="BindingPoolClass">
+      <doc xml:whitespace="preserve">Container of key bindings. The #ClutterBindingPool struct is
+private.</doc>
+      <constructor name="new"
+                   c:identifier="clutter_binding_pool_new"
+                   version="1.0">
+        <doc xml:whitespace="preserve">Creates a new #ClutterBindingPool that can be used to store
+key bindings for an actor. The @name must be a unique identifier
+for the binding pool, so that clutter_binding_pool_find() will
+be able to return the correct binding pool.
+name. Use g_object_unref() when done.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created binding pool with the given</doc>
+          <type name="BindingPool" c:type="ClutterBindingPool*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the binding pool</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="find"
+                c:identifier="clutter_binding_pool_find"
+                version="1.0">
+        <doc xml:whitespace="preserve">Finds the #ClutterBindingPool with @name.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to the #ClutterBindingPool, or %NULL</doc>
+          <type name="BindingPool" c:type="ClutterBindingPool*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the binding pool to find</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="get_for_class"
+                c:identifier="clutter_binding_pool_get_for_class"
+                version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterBindingPool for the given #GObject class
+and, eventually, creates it. This function is a wrapper around
+clutter_binding_pool_new() and uses the class type name as the
+unique name for the binding pool.
+Calling this function multiple times will return the same
+#ClutterBindingPool.
+A binding pool for a class can also be retrieved using
+clutter_binding_pool_find() with the class type name:
+|[
+pool = clutter_binding_pool_find (G_OBJECT_TYPE_NAME (instance));
+]|
+The returned #ClutterBindingPool is owned by Clutter and should not
+be freed directly</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the binding pool for the given class.</doc>
+          <type name="BindingPool" c:type="ClutterBindingPool*"/>
+        </return-value>
+        <parameters>
+          <parameter name="klass" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObjectClass pointer</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="activate"
+              c:identifier="clutter_binding_pool_activate"
+              version="1.0">
+        <doc xml:whitespace="preserve">Activates the callback associated to the action that is
+bound to the @key_val and @modifiers pair.
+The callback has the following signature:
+|[
+void (* callback) (GObject             *gobject,
+const gchar         *action_name,
+guint                key_val,
+ClutterModifierType  modifiers,
+gpointer             user_data);
+]|
+Where the #GObject instance is @gobject and the user data
+is the one passed when installing the action with
+clutter_binding_pool_install_action().
+If the action bound to the @key_val, @modifiers pair has been
+blocked using clutter_binding_pool_block_action(), the callback
+will not be invoked, and this function will return %FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if an action was found and was activated</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the key symbol</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <doc xml:whitespace="preserve">bitmask for the modifiers</doc>
+            <type name="ModifierType" c:type="ClutterModifierType"/>
+          </parameter>
+          <parameter name="gobject" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="block_action"
+              c:identifier="clutter_binding_pool_block_action"
+              version="1.0">
+        <doc xml:whitespace="preserve">Blocks all the actions with name @action_name inside @pool.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an action name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_action"
+              c:identifier="clutter_binding_pool_find_action"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the name of the action matching the given key symbol
+and modifiers bitmask.
+returned string is owned by the binding pool and should never
+be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the action, if found, or %NULL. The</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a key symbol</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a bitmask for the modifiers</doc>
+            <type name="ModifierType" c:type="ClutterModifierType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="install_action"
+              c:identifier="clutter_binding_pool_install_action"
+              version="1.0">
+        <doc xml:whitespace="preserve">Installs a new action inside a #ClutterBindingPool. The action
+is bound to @key_val and @modifiers.
+The same action name can be used for multiple @key_val, @modifiers
+pairs.
+When an action has been activated using clutter_binding_pool_activate()
+the passed @callback will be invoked (with @data).
+Actions can be blocked with clutter_binding_pool_block_action()
+and then unblocked using clutter_binding_pool_unblock_action().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key_val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">key symbol</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <doc xml:whitespace="preserve">bitmask of modifiers</doc>
+            <type name="ModifierType" c:type="ClutterModifierType"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="4"
+                     destroy="5">
+            <doc xml:whitespace="preserve">function to be called when the action is activated</doc>
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to be passed to @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">function to be called when the action is removed from the pool</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="install_closure"
+              c:identifier="clutter_binding_pool_install_closure"
+              version="1.0">
+        <doc xml:whitespace="preserve">A #GClosure variant of clutter_binding_pool_install_action().
+Installs a new action inside a #ClutterBindingPool. The action
+is bound to @key_val and @modifiers.
+The same action name can be used for multiple @key_val, @modifiers
+pairs.
+When an action has been activated using clutter_binding_pool_activate()
+the passed @closure will be invoked.
+Actions can be blocked with clutter_binding_pool_block_action()
+and then unblocked using clutter_binding_pool_unblock_action().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key_val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">key symbol</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <doc xml:whitespace="preserve">bitmask of modifiers</doc>
+            <type name="ModifierType" c:type="ClutterModifierType"/>
+          </parameter>
+          <parameter name="closure" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GClosure</doc>
+            <type name="GObject.Closure" c:type="GClosure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="override_action"
+              c:identifier="clutter_binding_pool_override_action"
+              version="1.0">
+        <doc xml:whitespace="preserve">Allows overriding the action for @key_val and @modifiers inside a
+#ClutterBindingPool. See clutter_binding_pool_install_action().
+When an action has been activated using clutter_binding_pool_activate()
+the passed @callback will be invoked (with @data).
+Actions can be blocked with clutter_binding_pool_block_action()
+and then unblocked using clutter_binding_pool_unblock_action().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">key symbol</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <doc xml:whitespace="preserve">bitmask of modifiers</doc>
+            <type name="ModifierType" c:type="ClutterModifierType"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="3"
+                     destroy="4">
+            <doc xml:whitespace="preserve">function to be called when the action is activated</doc>
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to be passed to @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">function to be called when the action is removed from the pool</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="override_closure"
+              c:identifier="clutter_binding_pool_override_closure"
+              version="1.0">
+        <doc xml:whitespace="preserve">A #GClosure variant of clutter_binding_pool_override_action().
+Allows overriding the action for @key_val and @modifiers inside a
+#ClutterBindingPool. See clutter_binding_pool_install_closure().
+When an action has been activated using clutter_binding_pool_activate()
+the passed @callback will be invoked (with @data).
+Actions can be blocked with clutter_binding_pool_block_action()
+and then unblocked using clutter_binding_pool_unblock_action().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">key symbol</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <doc xml:whitespace="preserve">bitmask of modifiers</doc>
+            <type name="ModifierType" c:type="ClutterModifierType"/>
+          </parameter>
+          <parameter name="closure" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GClosure</doc>
+            <type name="GObject.Closure" c:type="GClosure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_action"
+              c:identifier="clutter_binding_pool_remove_action"
+              version="1.0">
+        <doc xml:whitespace="preserve">Removes the action matching the given @key_val, @modifiers pair,
+if any exists.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a key symbol</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a bitmask for the modifiers</doc>
+            <type name="ModifierType" c:type="ClutterModifierType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unblock_action"
+              c:identifier="clutter_binding_pool_unblock_action"
+              version="1.0">
+        <doc xml:whitespace="preserve">Unblockes all the actions with name @action_name inside @pool.
+Unblocking an action does not cause the callback bound to it to
+be invoked in case clutter_binding_pool_activate() was called on
+an action previously blocked with clutter_binding_pool_block_action().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an action name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="name"
+                version="1.0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The unique name of the #ClutterBindingPool.</doc>
+        <type name="utf8"/>
+      </property>
+    </class>
+    <record name="BindingPoolClass"
+            c:type="ClutterBindingPoolClass"
+            disguised="1"
+            glib:is-gtype-struct-for="BindingPool">
+    </record>
+    <constant name="Blue" value="269025190">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Bluetooth" value="269025172">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="BlurEffect"
+           c:symbol-prefix="blur_effect"
+           c:type="ClutterBlurEffect"
+           version="1.4"
+           parent="OffscreenEffect"
+           glib:type-name="ClutterBlurEffect"
+           glib:get-type="clutter_blur_effect_get_type"
+           glib:type-struct="BlurEffectClass">
+      <doc xml:whitespace="preserve">&lt;structname&gt;ClutterBlurEffect&lt;/structname&gt; is an opaque structure
+whose members cannot be accessed directly</doc>
+      <constructor name="new"
+                   c:identifier="clutter_blur_effect_new"
+                   version="1.4">
+        <doc xml:whitespace="preserve">Creates a new #ClutterBlurEffect to be used with
+clutter_actor_add_effect()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterBlurEffect or %NULL</doc>
+          <type name="Effect" c:type="ClutterEffect*"/>
+        </return-value>
+      </constructor>
+    </class>
+    <record name="BlurEffectClass"
+            c:type="ClutterBlurEffectClass"
+            disguised="1"
+            glib:is-gtype-struct-for="BlurEffect">
+    </record>
+    <constant name="Book" value="269025106">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="BounceKeys_Enable" value="65140">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Box"
+           c:symbol-prefix="box"
+           c:type="ClutterBox"
+           version="1.2"
+           parent="Actor"
+           glib:type-name="ClutterBox"
+           glib:get-type="clutter_box_get_type"
+           glib:type-struct="BoxClass">
+      <doc xml:whitespace="preserve">The #ClutterBox structure contains only private data and should
+be accessed using the provided API</doc>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Animatable"/>
+      <implements name="Container"/>
+      <implements name="Scriptable"/>
+      <constructor name="new" c:identifier="clutter_box_new" version="1.0">
+        <doc xml:whitespace="preserve">Creates a new #ClutterBox. The children of the box will be layed
+out by the passed @manager</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterBox actor</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="manager" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterLayoutManager</doc>
+            <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_color"
+              c:identifier="clutter_box_get_color"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the background color of @box
+If the #ClutterBox:color-set property is set to %FALSE the
+returned #ClutterColor is undefined</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for a #ClutterColor</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_layout_manager"
+              c:identifier="clutter_box_get_layout_manager"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterLayoutManager instance used by @box
+#ClutterLayoutManager is owned by the #ClutterBox and it should not
+be unreferenced</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterLayoutManager. The returned</doc>
+          <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+        </return-value>
+      </method>
+      <method name="pack"
+              c:identifier="clutter_box_pack"
+              version="1.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Adds @actor to @box and sets layout properties at the same time,
+if the #ClutterLayoutManager used by @box has them
+This function is a wrapper around clutter_container_add_actor()
+and clutter_layout_manager_child_set()
+Language bindings should use the vector-based clutter_box_addv()
+variant instead</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="first_property" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the first property to set, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pack_after"
+              c:identifier="clutter_box_pack_after"
+              version="1.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Adds @actor to @box, placing it after @sibling, and sets layout
+properties at the same time, if the #ClutterLayoutManager used by
+If @sibling is %NULL then @actor is placed at the end of the
+list of children, to be allocated and painted after every other child
+This function is a wrapper around clutter_container_add_actor(),
+clutter_container_raise_child() and clutter_layout_manager_child_set()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="sibling" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterActor or %NULL</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="first_property" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the first property to set, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pack_at"
+              c:identifier="clutter_box_pack_at"
+              version="1.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Adds @actor to @box, placing it at @position, and sets layout
+properties at the same time, if the #ClutterLayoutManager used by
+If @position is a negative number, or is larger than the number of
+children of @box, the new child is added at the end of the list of
+children</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position to insert the @actor at</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="first_property" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the first property to set, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pack_before"
+              c:identifier="clutter_box_pack_before"
+              version="1.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Adds @actor to @box, placing it before @sibling, and sets layout
+properties at the same time, if the #ClutterLayoutManager used by
+If @sibling is %NULL then @actor is placed at the beginning of the
+list of children, to be allocated and painted below every other child
+This function is a wrapper around clutter_container_add_actor(),
+clutter_container_lower_child() and clutter_layout_manager_child_set()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="sibling" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterActor or %NULL</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="first_property" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the first property to set, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="packv" c:identifier="clutter_box_packv" version="1.2">
+        <doc xml:whitespace="preserve">Vector-based variant of clutter_box_pack(), intended for language
+bindings to use</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="n_properties" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of properties to set</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="properties" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a vector containing the property names to set</doc>
+            <array length="1" c:type="gchar*">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a vector containing the property values to set</doc>
+            <array length="1" c:type="GValue*">
+              <type name="GObject.Value" c:type="GValue"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_color"
+              c:identifier="clutter_box_set_color"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets (or unsets) the background color for @box</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the background color, or %NULL to unset</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_layout_manager"
+              c:identifier="clutter_box_set_layout_manager"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets the #ClutterLayoutManager for @box
+A #ClutterLayoutManager is a delegate object that controls the
+layout of the children of @box</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="manager" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterLayoutManager</doc>
+            <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="color"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The color to be used to paint the background of the
+#ClutterBox. Setting this property will set the
+#ClutterBox:color-set property as a side effect</doc>
+        <type name="Color"/>
+      </property>
+      <property name="color-set"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the #ClutterBox:color property has been set</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="layout-manager"
+                version="1.2"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #ClutterLayoutManager used by the #ClutterBox</doc>
+        <type name="LayoutManager"/>
+      </property>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="Actor" c:type="ClutterActor"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="BoxPrivate" c:type="ClutterBoxPrivate*"/>
+      </field>
+    </class>
+    <enumeration name="BoxAlignment"
+                 version="1.2"
+                 glib:type-name="ClutterBoxAlignment"
+                 glib:get-type="clutter_box_alignment_get_type"
+                 c:type="ClutterBoxAlignment">
+      <doc xml:whitespace="preserve">The alignment policies available on each axis of the #ClutterBoxLayout</doc>
+      <member name="start"
+              value="0"
+              c:identifier="CLUTTER_BOX_ALIGNMENT_START"
+              glib:nick="start"/>
+      <member name="end"
+              value="1"
+              c:identifier="CLUTTER_BOX_ALIGNMENT_END"
+              glib:nick="end"/>
+      <member name="center"
+              value="2"
+              c:identifier="CLUTTER_BOX_ALIGNMENT_CENTER"
+              glib:nick="center"/>
+    </enumeration>
+    <record name="BoxClass"
+            c:type="ClutterBoxClass"
+            glib:is-gtype-struct-for="Box"
+            version="1.2">
+      <doc xml:whitespace="preserve">The #ClutterBoxClass structure contains only private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="ActorClass" c:type="ClutterActorClass"/>
+      </field>
+      <field name="clutter_padding_1">
+        <callback name="clutter_padding_1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_padding_2">
+        <callback name="clutter_padding_2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_padding_3">
+        <callback name="clutter_padding_3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_padding_4">
+        <callback name="clutter_padding_4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_padding_5">
+        <callback name="clutter_padding_5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="clutter_padding_6">
+        <callback name="clutter_padding_6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="BoxLayout"
+           c:symbol-prefix="box_layout"
+           c:type="ClutterBoxLayout"
+           version="1.2"
+           parent="LayoutManager"
+           glib:type-name="ClutterBoxLayout"
+           glib:get-type="clutter_box_layout_get_type"
+           glib:type-struct="BoxLayoutClass">
+      <doc xml:whitespace="preserve">The #ClutterBoxLayout structure contains only private data
+and should be accessed using the provided API</doc>
+      <constructor name="new"
+                   c:identifier="clutter_box_layout_new"
+                   version="1.2">
+        <doc xml:whitespace="preserve">Creates a new #ClutterBoxLayout layout manager</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterBoxLayout</doc>
+          <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+        </return-value>
+      </constructor>
+      <method name="get_alignment"
+              c:identifier="clutter_box_layout_get_alignment"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the horizontal and vertical alignment policies for @actor
+as set using clutter_box_layout_pack() or clutter_box_layout_set_alignment()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @layout</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_align"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the horizontal alignment policy</doc>
+            <type name="BoxAlignment" c:type="ClutterBoxAlignment*"/>
+          </parameter>
+          <parameter name="y_align"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the vertical alignment policy</doc>
+            <type name="BoxAlignment" c:type="ClutterBoxAlignment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_easing_duration"
+              c:identifier="clutter_box_layout_get_easing_duration"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the duration set using clutter_box_layout_set_easing_duration()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the duration of the animations, in milliseconds</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_easing_mode"
+              c:identifier="clutter_box_layout_get_easing_mode"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the easing mode set using clutter_box_layout_set_easing_mode()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an easing mode</doc>
+          <type name="gulong" c:type="gulong"/>
+        </return-value>
+      </method>
+      <method name="get_expand"
+              c:identifier="clutter_box_layout_get_expand"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves whether @actor should expand inside @layout</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #ClutterActor should expand, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @layout</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_fill"
+              c:identifier="clutter_box_layout_get_fill"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the horizontal and vertical fill policies for @actor
+as set using clutter_box_layout_pack() or clutter_box_layout_set_fill()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @layout</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_fill"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the horizontal fill policy</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="y_fill"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the vertical fill policy</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_homogeneous"
+              c:identifier="clutter_box_layout_get_homogeneous"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves if the children sizes are allocated homogeneously.
+homogeneously, and %FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #ClutterBoxLayout is arranging its children</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_pack_start"
+              c:identifier="clutter_box_layout_get_pack_start"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the value set using clutter_box_layout_set_pack_start()
+at the beginning of the layout, and %FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #ClutterBoxLayout should pack children</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_spacing"
+              c:identifier="clutter_box_layout_get_spacing"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the spacing set using clutter_box_layout_set_spacing()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the spacing between children of the #ClutterBoxLayout</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_use_animations"
+              c:identifier="clutter_box_layout_get_use_animations"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves whether @layout should animate changes in the layout properties
+Since clutter_box_layout_set_use_animations()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the animations should be used, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_vertical"
+              c:identifier="clutter_box_layout_get_vertical"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the orientation of the @layout as set using the
+clutter_box_layout_set_vertical() function
+vertically, and %FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #ClutterBoxLayout is arranging its children</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="pack" c:identifier="clutter_box_layout_pack" version="1.2">
+        <doc xml:whitespace="preserve">Packs @actor inside the #ClutterContainer associated to @layout
+and sets the layout properties</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="expand" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the @actor should expand</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="x_fill" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the @actor should fill horizontally</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="y_fill" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the @actor should fill vertically</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="x_align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the horizontal alignment policy for @actor</doc>
+            <type name="BoxAlignment" c:type="ClutterBoxAlignment"/>
+          </parameter>
+          <parameter name="y_align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the vertical alignment policy for @actor</doc>
+            <type name="BoxAlignment" c:type="ClutterBoxAlignment"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_alignment"
+              c:identifier="clutter_box_layout_set_alignment"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets the horizontal and vertical alignment policies for @actor
+inside @layout</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @layout</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Horizontal alignment policy for @actor</doc>
+            <type name="BoxAlignment" c:type="ClutterBoxAlignment"/>
+          </parameter>
+          <parameter name="y_align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Vertical alignment policy for @actor</doc>
+            <type name="BoxAlignment" c:type="ClutterBoxAlignment"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_easing_duration"
+              c:identifier="clutter_box_layout_set_easing_duration"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets the duration of the animations used by @layout when animating changes
+in the layout properties
+Use clutter_box_layout_set_use_animations() to enable and disable the
+animations</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the duration of the animations, in milliseconds</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_easing_mode"
+              c:identifier="clutter_box_layout_set_easing_mode"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets the easing mode to be used by @layout when animating changes in layout
+properties
+Use clutter_box_layout_set_use_animations() to enable and disable the
+animations</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an easing mode, either from #ClutterAnimationMode or a logical id from clutter_alpha_register_func()</doc>
+            <type name="gulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_expand"
+              c:identifier="clutter_box_layout_set_expand"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets whether @actor should expand inside @layout</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @layout</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="expand" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether @actor should expand</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_fill"
+              c:identifier="clutter_box_layout_set_fill"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets the horizontal and vertical fill policies for @actor
+inside @layout</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @layout</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_fill" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether @actor should fill horizontally the allocated space</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="y_fill" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether @actor should fill vertically the allocated space</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_homogeneous"
+              c:identifier="clutter_box_layout_set_homogeneous"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets whether the size of @layout children should be
+homogeneous</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="homogeneous" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the layout should be homogeneous</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_pack_start"
+              c:identifier="clutter_box_layout_set_pack_start"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets whether children of @layout should be layed out by appending
+them or by prepending them</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pack_start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the @layout should pack children at the beginning of the layout</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_spacing"
+              c:identifier="clutter_box_layout_set_spacing"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets the spacing between children of @layout</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spacing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the spacing between children of the layout, in pixels</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_use_animations"
+              c:identifier="clutter_box_layout_set_use_animations"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets whether @layout should animate changes in the layout properties
+The duration of the animations is controlled by
+clutter_box_layout_set_easing_duration(); the easing mode to be used
+by the animations is controlled by clutter_box_layout_set_easing_mode()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="animate" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the @layout should use animations</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_vertical"
+              c:identifier="clutter_box_layout_set_vertical"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets whether @layout should arrange its children vertically alongside
+the Y axis, instead of horizontally alongside the X axis</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="vertical" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the layout should be vertical</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="easing-duration"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The duration of the animations, in case #ClutterBoxLayout:use-animations
+is set to %TRUE
+The duration is expressed in milliseconds</doc>
+        <type name="guint"/>
+      </property>
+      <property name="easing-mode"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The easing mode for the animations, in case
+#ClutterBoxLayout:use-animations is set to %TRUE
+either be a value from the #ClutterAnimationMode enumeration, like
+%CLUTTER_EASE_OUT_CUBIC, or a logical id as returned by
+clutter_alpha_register_func()
+The default value is %CLUTTER_EASE_OUT_CUBIC</doc>
+        <type name="gulong"/>
+      </property>
+      <property name="homogeneous"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the #ClutterBoxLayout should arrange its children
+homogeneously, i.e. all childs get the same size</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="pack-start"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the #ClutterBoxLayout should pack items at the start
+or append them at the end</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="spacing"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The spacing between children of the #ClutterBoxLayout, in pixels</doc>
+        <type name="guint"/>
+      </property>
+      <property name="use-animations"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the #ClutterBoxLayout should animate changes in the
+layout properties</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="vertical"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the #ClutterBoxLayout should arrange its children
+alongside the Y axis, instead of alongside the X axis</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="LayoutManager" c:type="ClutterLayoutManager"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="BoxLayoutPrivate" c:type="ClutterBoxLayoutPrivate*"/>
+      </field>
+    </class>
+    <record name="BoxLayoutClass"
+            c:type="ClutterBoxLayoutClass"
+            glib:is-gtype-struct-for="BoxLayout"
+            version="1.2">
+      <doc xml:whitespace="preserve">The #ClutterBoxLayoutClass structure contains only private
+data and should be accessed using the provided API</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="LayoutManagerClass" c:type="ClutterLayoutManagerClass"/>
+      </field>
+    </record>
+    <record name="BoxLayoutPrivate"
+            c:type="ClutterBoxLayoutPrivate"
+            disguised="1">
+    </record>
+    <record name="BoxPrivate" c:type="ClutterBoxPrivate" disguised="1">
+    </record>
+    <constant name="Break" value="65387">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="BrightnessAdjust" value="269025083">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="ButtonEvent" c:type="ClutterButtonEvent" version="0.2">
+      <doc xml:whitespace="preserve">Button event.
+The event coordinates are relative to the stage that received the
+event, and can be transformed into actor-relative coordinates by
+using clutter_actor_transform_stage_point().</doc>
+      <field name="type" writable="1">
+        <type name="EventType" c:type="ClutterEventType"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="EventFlags" c:type="ClutterEventFlags"/>
+      </field>
+      <field name="stage" writable="1">
+        <type name="Stage" c:type="ClutterStage*"/>
+      </field>
+      <field name="source" writable="1">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </field>
+      <field name="x" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="modifier_state" writable="1">
+        <type name="ModifierType" c:type="ClutterModifierType"/>
+      </field>
+      <field name="button" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="click_count" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="axes" writable="1">
+        <type name="gdouble" c:type="gdouble*"/>
+      </field>
+      <field name="device" writable="1">
+        <type name="InputDevice" c:type="ClutterInputDevice*"/>
+      </field>
+    </record>
+    <constant name="Byelorussian_SHORTU" value="1726">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Byelorussian_shortu" value="1710">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="C" value="67">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="CD" value="269025107">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="COGL" value="gl">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="CURRENT_TIME" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cabovedot" value="709">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cacute" value="454">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="CairoTexture"
+           c:symbol-prefix="cairo_texture"
+           c:type="ClutterCairoTexture"
+           version="1.0"
+           parent="Texture"
+           glib:type-name="ClutterCairoTexture"
+           glib:get-type="clutter_cairo_texture_get_type"
+           glib:type-struct="CairoTextureClass">
+      <doc xml:whitespace="preserve">The #ClutterCairoTexture struct contains only private data.</doc>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Animatable"/>
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_cairo_texture_new"
+                   version="1.0">
+        <doc xml:whitespace="preserve">Creates a new #ClutterCairoTexture actor, with a surface of @width by</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterCairoTexture actor</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the width of the surface</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the height of the surface</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="create_surface">
+        <return-value transfer-ownership="full">
+          <type name="cairo.Surface" c:type="cairo_surface_t*"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="clear"
+              c:identifier="clutter_cairo_texture_clear"
+              version="1.0">
+        <doc xml:whitespace="preserve">Clears @self's internal drawing surface, so that the next upload
+will replace the previous contents of the #ClutterCairoTexture
+rather than adding to it.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="create"
+              c:identifier="clutter_cairo_texture_create"
+              version="1.0">
+        <doc xml:whitespace="preserve">Creates a new Cairo context for the @cairo texture. It is
+similar to using clutter_cairo_texture_create_region() with @x_offset
+and @y_offset of 0, @width equal to the @cairo texture surface width
+and @height equal to the @cairo texture surface height.
+&lt;warning&gt;&lt;para&gt;Do not call this function within the paint virtual
+function or from a callback to the #ClutterActor::paint
+signal.&lt;/para&gt;&lt;/warning&gt;
+to upload the contents of the context when done drawing</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly created Cairo context. Use cairo_destroy()</doc>
+          <type name="cairo.Context" c:type="cairo_t*"/>
+        </return-value>
+      </method>
+      <method name="create_region"
+              c:identifier="clutter_cairo_texture_create_region"
+              version="1.0">
+        <doc xml:whitespace="preserve">Creates a new Cairo context that will updat the region defined
+by @x_offset, @y_offset, @width and @height.
+&lt;warning&gt;&lt;para&gt;Do not call this function within the paint virtual
+function or from a callback to the #ClutterActor::paint
+signal.&lt;/para&gt;&lt;/warning&gt;
+to upload the contents of the context when done drawing</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly created Cairo context. Use cairo_destroy()</doc>
+          <type name="cairo.Context" c:type="cairo_t*"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">offset of the region on the X axis</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y_offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">offset of the region on the Y axis</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">width of the region, or -1 for the full surface width</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">height of the region, or -1 for the full surface height</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_surface_size"
+              c:identifier="clutter_cairo_texture_get_surface_size"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the surface width and height for @self.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the surface width, or %NULL</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the surface height, or %NULL</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_surface_size"
+              c:identifier="clutter_cairo_texture_set_surface_size"
+              version="1.0">
+        <doc xml:whitespace="preserve">Resizes the Cairo surface used by @self to @width and @height.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new width of the surface</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new height of the surface</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="surface-height"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The height of the Cairo surface used by the #ClutterCairoTexture
+actor, in pixels.</doc>
+        <type name="guint"/>
+      </property>
+      <property name="surface-width"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The width of the Cairo surface used by the #ClutterCairoTexture
+actor, in pixels.</doc>
+        <type name="guint"/>
+      </property>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="Texture" c:type="ClutterTexture"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="CairoTexturePrivate" c:type="ClutterCairoTexturePrivate*"/>
+      </field>
+      <glib:signal name="create-surface" version="1.6">
+        <doc xml:whitespace="preserve">The ::create-surface signal is emitted when a #ClutterCairoTexture
+news its surface (re)created, which happens either when the Cairo
+context is created with clutter_cairo_texture_create() or
+clutter_cairo_texture_create_region(), or when the surface is resized
+through clutter_cairo_texture_set_surface_size().
+The first signal handler that returns a non-%NULL, valid surface will
+stop any further signal emission, and the returned surface will be
+the one used.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #cairo_surface_t for the texture</doc>
+          <type name="cairo.Surface"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the width of the surface to create</doc>
+            <type name="guint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the height of the surface to create</doc>
+            <type name="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="CairoTextureClass"
+            c:type="ClutterCairoTextureClass"
+            glib:is-gtype-struct-for="CairoTexture"
+            version="1.0">
+      <doc xml:whitespace="preserve">The #ClutterCairoTextureClass struct contains only private data.</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="TextureClass" c:type="ClutterTextureClass"/>
+      </field>
+      <field name="create_surface">
+        <callback name="create_surface">
+          <return-value transfer-ownership="full">
+            <type name="cairo.Surface" c:type="cairo_surface_t*"/>
+          </return-value>
+          <parameters>
+            <parameter name="texture" transfer-ownership="none">
+              <type name="CairoTexture" c:type="ClutterCairoTexture*"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_cairo_2" introspectable="0">
+        <callback name="_clutter_cairo_2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_cairo_3" introspectable="0">
+        <callback name="_clutter_cairo_3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_cairo_4" introspectable="0">
+        <callback name="_clutter_cairo_4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="CairoTexturePrivate"
+            c:type="ClutterCairoTexturePrivate"
+            disguised="1">
+    </record>
+    <constant name="Calculator" value="269025053">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Calendar" value="269025056">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <callback name="Callback" c:type="ClutterCallback">
+      <doc xml:whitespace="preserve">Generic callback</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="actor" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterActor</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">user data</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <constant name="Cancel" value="65385">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Caps_Lock" value="65509">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ccaron" value="456">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ccedilla" value="199">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ccircumflex" value="710">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="ChildMeta"
+           c:symbol-prefix="child_meta"
+           c:type="ClutterChildMeta"
+           version="0.8"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="ClutterChildMeta"
+           glib:get-type="clutter_child_meta_get_type"
+           glib:type-struct="ChildMetaClass">
+      <doc xml:whitespace="preserve">Base interface for container specific state for child actors. A child
+data is meant to be used when you need to keep track of information
+about each individual child added to a container.
+In order to use it you should create your own subclass of
+#ClutterChildMeta and set the #ClutterContainerIface::child_meta_type
+interface member to your subclass type, like:
+|[
+static void
+my_container_iface_init (ClutterContainerIface *iface)
+{
+/&amp;ast; set the rest of the #ClutterContainer vtable &amp;ast;/
+container_iface-&gt;child_meta_type  = MY_TYPE_CHILD_META;
+}
+]|
+This will automatically create a #ClutterChildMeta of type
+MY_TYPE_CHILD_META for every actor that is added to the container.
+The child data for an actor can be retrieved using the
+clutter_container_get_child_meta() function.
+The properties of the data and your subclass can be manipulated with
+clutter_container_child_set() and clutter_container_child_get() which
+act like g_object_set() and g_object_get().
+You can provide hooks for your own storage as well as control the
+instantiation by overriding #ClutterContainerIface::create_child_meta,
+#ClutterContainerIface::destroy_child_meta and
+#ClutterContainerIface::get_child_meta.</doc>
+      <method name="get_actor"
+              c:identifier="clutter_child_meta_get_actor"
+              version="0.8">
+        <doc xml:whitespace="preserve">Retrieves the actor wrapped by @data</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterActor</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="get_container"
+              c:identifier="clutter_child_meta_get_container"
+              version="0.8">
+        <doc xml:whitespace="preserve">Retrieves the container using @data</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterContainer</doc>
+          <type name="Container" c:type="ClutterContainer*"/>
+        </return-value>
+      </method>
+      <property name="actor"
+                version="0.8"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #ClutterActor being wrapped by this #ClutterChildMeta</doc>
+        <type name="Actor"/>
+      </property>
+      <property name="container"
+                version="0.8"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #ClutterContainer that created this #ClutterChildMeta.</doc>
+        <type name="Container"/>
+      </property>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="container">
+        <type name="Container" c:type="ClutterContainer*"/>
+      </field>
+      <field name="actor">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </field>
+    </class>
+    <record name="ChildMetaClass"
+            c:type="ClutterChildMetaClass"
+            glib:is-gtype-struct-for="ChildMeta"
+            version="0.8">
+      <doc xml:whitespace="preserve">The #ClutterChildMetaClass contains only private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+    </record>
+    <constant name="Clear" value="65291">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ClearGrab" value="269024801">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="ClickAction"
+           c:symbol-prefix="click_action"
+           c:type="ClutterClickAction"
+           version="1.4"
+           parent="Action"
+           glib:type-name="ClutterClickAction"
+           glib:get-type="clutter_click_action_get_type"
+           glib:type-struct="ClickActionClass">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;ClutterClickAction&lt;/structname&gt; structure contains
+only private data and should be accessed using the provided API</doc>
+      <constructor name="new"
+                   c:identifier="clutter_click_action_new"
+                   version="1.4">
+        <doc xml:whitespace="preserve">Creates a new #ClutterClickAction instance</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterClickAction</doc>
+          <type name="Action" c:type="ClutterAction*"/>
+        </return-value>
+      </constructor>
+      <virtual-method name="clicked">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_button"
+              c:identifier="clutter_click_action_get_button"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the button that was pressed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the button value</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_state"
+              c:identifier="clutter_click_action_get_state"
+              version="1.6">
+        <doc xml:whitespace="preserve">Retrieves the modifier state of the click action.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the modifier state parameter, or 0</doc>
+          <type name="ModifierType" c:type="ClutterModifierType"/>
+        </return-value>
+      </method>
+      <method name="release"
+              c:identifier="clutter_click_action_release"
+              version="1.4">
+        <doc xml:whitespace="preserve">Emulates a release of the pointer button, which ungrabs the pointer
+and unsets the #ClutterClickAction:pressed state.
+This function is useful to break a grab, for instance after a certain
+amount of time has passed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="held" version="1.4" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the clickable actor has the pointer grabbed</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="pressed" version="1.4" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the clickable actor should be in "pressed" state</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="Action" c:type="ClutterAction"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="ClickActionPrivate" c:type="ClutterClickActionPrivate*"/>
+      </field>
+      <glib:signal name="clicked" version="1.4">
+        <doc xml:whitespace="preserve">The ::clicked signal is emitted when the #ClutterActor to which
+a #ClutterClickAction has been applied should respond to a
+pointer button press and release events</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterActor attached to the @action</doc>
+            <type name="Actor"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="ClickActionClass"
+            c:type="ClutterClickActionClass"
+            glib:is-gtype-struct-for="ClickAction"
+            version="1.4">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;ClutterClickActionClass&lt;/structname&gt; structure
+contains only private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="ActionClass" c:type="ClutterActionClass"/>
+      </field>
+      <field name="clicked">
+        <callback name="clicked">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="action" transfer-ownership="none">
+              <type name="ClickAction" c:type="ClutterClickAction*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_click_action1" introspectable="0">
+        <callback name="_clutter_click_action1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_click_action2" introspectable="0">
+        <callback name="_clutter_click_action2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_click_action3" introspectable="0">
+        <callback name="_clutter_click_action3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_click_action4" introspectable="0">
+        <callback name="_clutter_click_action4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_click_action5" introspectable="0">
+        <callback name="_clutter_click_action5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_click_action6" introspectable="0">
+        <callback name="_clutter_click_action6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_click_action7" introspectable="0">
+        <callback name="_clutter_click_action7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ClickActionPrivate"
+            c:type="ClutterClickActionPrivate"
+            disguised="1">
+    </record>
+    <class name="Clone"
+           c:symbol-prefix="clone"
+           c:type="ClutterClone"
+           version="1.0"
+           parent="Actor"
+           glib:type-name="ClutterClone"
+           glib:get-type="clutter_clone_get_type"
+           glib:type-struct="CloneClass">
+      <doc xml:whitespace="preserve">The #ClutterClone structure contains only private data
+and should be accessed using the provided API</doc>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Animatable"/>
+      <implements name="Scriptable"/>
+      <constructor name="new" c:identifier="clutter_clone_new" version="1.0">
+        <doc xml:whitespace="preserve">Creates a new #ClutterActor which clones @source/</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterClone</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor, or %NULL</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_source"
+              c:identifier="clutter_clone_get_source"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the source #ClutterActor being cloned by @clone</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the actor source for the clone</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="set_source"
+              c:identifier="clutter_clone_set_source"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets @source as the source actor to be cloned by @clone.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor, or %NULL</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="source"
+                version="1.0"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">This property specifies the source actor being cloned.</doc>
+        <type name="Actor"/>
+      </property>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="Actor" c:type="ClutterActor"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="ClonePrivate" c:type="ClutterClonePrivate*"/>
+      </field>
+    </class>
+    <record name="CloneClass"
+            c:type="ClutterCloneClass"
+            glib:is-gtype-struct-for="Clone"
+            version="1.0">
+      <doc xml:whitespace="preserve">The #ClutterCloneClass structure contains only private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="ActorClass" c:type="ClutterActorClass"/>
+      </field>
+      <field name="_clutter_actor_clone1" introspectable="0">
+        <callback name="_clutter_actor_clone1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_actor_clone2" introspectable="0">
+        <callback name="_clutter_actor_clone2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_actor_clone3" introspectable="0">
+        <callback name="_clutter_actor_clone3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_actor_clone4" introspectable="0">
+        <callback name="_clutter_actor_clone4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ClonePrivate" c:type="ClutterClonePrivate" disguised="1">
+    </record>
+    <constant name="Close" value="269025110">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Codeinput" value="65335">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ColonSign" value="16785569">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="Color"
+            c:type="ClutterColor"
+            glib:type-name="ClutterColor"
+            glib:get-type="clutter_color_get_type"
+            c:symbol-prefix="color">
+      <doc xml:whitespace="preserve">Color representation.</doc>
+      <field name="red" writable="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+      <field name="green" writable="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+      <field name="blue" writable="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+      <field name="alpha" writable="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+      <constructor name="new" c:identifier="clutter_color_new" version="0.8.4">
+        <doc xml:whitespace="preserve">Creates a new #ClutterColor with the given values.
+Use clutter_color_free() when done</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly allocated color.</doc>
+          <type name="Color" c:type="ClutterColor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="red" transfer-ownership="none">
+            <doc xml:whitespace="preserve">red component of the color, between 0 and 255</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="green" transfer-ownership="none">
+            <doc xml:whitespace="preserve">green component of the color, between 0 and 255</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="blue" transfer-ownership="none">
+            <doc xml:whitespace="preserve">blue component of the color, between 0 and 255</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">alpha component of the color, between 0 and 255</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="add" c:identifier="clutter_color_add">
+        <doc xml:whitespace="preserve">Adds @a to @b and saves the resulting color inside @result.
+The alpha channel of @result is set as as the maximum value
+between the alpha channels of @a and @b.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="b" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterColor</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+          <parameter name="result"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the result</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy" c:identifier="clutter_color_copy" version="0.2">
+        <doc xml:whitespace="preserve">Makes a copy of the color structure.  The result must be
+freed using clutter_color_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">an allocated copy of @color.</doc>
+          <type name="Color" c:type="ClutterColor*"/>
+        </return-value>
+      </method>
+      <method name="darken" c:identifier="clutter_color_darken">
+        <doc xml:whitespace="preserve">Darkens @color by a fixed amount, and saves the changed color
+in @result.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="result"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the darker color</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free" c:identifier="clutter_color_free" version="0.2">
+        <doc xml:whitespace="preserve">Frees a color structure created with clutter_color_copy().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="from_hls" c:identifier="clutter_color_from_hls">
+        <doc xml:whitespace="preserve">Converts a color expressed in HLS (hue, luminance and saturation)
+values into a #ClutterColor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="hue" transfer-ownership="none">
+            <doc xml:whitespace="preserve">hue value, in the 0 .. 360 range</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="luminance" transfer-ownership="none">
+            <doc xml:whitespace="preserve">luminance value, in the 0 .. 1 range</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="saturation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">saturation value, in the 0 .. 1 range</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="from_pixel" c:identifier="clutter_color_from_pixel">
+        <doc xml:whitespace="preserve">Converts @pixel from the packed representation of a four 8 bit channel
+color to a #ClutterColor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixel" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a 32 bit packed integer containing a color</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="from_string"
+              c:identifier="clutter_color_from_string"
+              version="1.0">
+        <doc xml:whitespace="preserve">Parses a string definition of a color, filling the
+&lt;structfield&gt;red&lt;/structfield&gt;, &lt;structfield&gt;green&lt;/structfield&gt;, 
+&lt;structfield&gt;blue&lt;/structfield&gt; and &lt;structfield&gt;alpha&lt;/structfield&gt; 
+channels of @color.
+The @color is not allocated.
+The format of @str can be either one of:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;
+&lt;para&gt;a standard name (as taken from the X11 rgb.txt file)&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;an hexadecimal value in the form: &lt;literal&gt;&amp;num;rgb&lt;/literal&gt;,
+&lt;literal&gt;&amp;num;rrggbb&lt;/literal&gt;, &lt;literal&gt;&amp;num;rgba&lt;/literal&gt; or
+&lt;literal&gt;&amp;num;rrggbbaa&lt;/literal&gt;&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;a RGB color in the form: &lt;literal&gt;rgb(r, g, b)&lt;/literal&gt;&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;a RGB color in the form: &lt;literal&gt;rgba(r, g, b, a)&lt;/literal&gt;&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;a HSL color in the form: &lt;literal&gt;hsl(h, s, l)&lt;/literal&gt;&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;a HSL color in the form: &lt;literal&gt;hsla(h, s, l, a)&lt;/literal&gt;&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+where 'r', 'g', 'b' and 'a' are (respectively) the red, green, blue color
+intensities and the opacity. The 'h', 's' and 'l' are (respectively) the
+hue, saturation and luminance values.
+In the rgb() and rgba() formats, the 'r', 'g', and 'b' values are either
+integers between 0 and 255, or percentage values in the range between 0%
+and 100%; the percentages require the '%' character. The 'a' value, if
+specified, can only be a floating point value between 0.0 and 1.0.
+In the hls() and hlsa() formats, the 'h' value (hue) it's an angle between
+0 and 360.0 degrees; the 'l' and 's' values (luminance and saturation) are
+a floating point value between 0.0 and 1.0. The 'a' value, if specified,
+can only be a floating point value between 0.0 and 1.0.
+Whitespace inside the definitions is ignored; no leading whitespace
+is allowed.
+If the alpha component is not specified then it is assumed to be set to
+be fully opaque.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if parsing succeeded, and %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string specifiying a color</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="interpolate"
+              c:identifier="clutter_color_interpolate"
+              version="1.6">
+        <doc xml:whitespace="preserve">Interpolates between @initial and @final #ClutterColor&lt;!-- --&gt;s
+using @progress</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="final" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the final #ClutterColor</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+          <parameter name="progress" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the interpolation progress</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="result"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the interpolation</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lighten" c:identifier="clutter_color_lighten">
+        <doc xml:whitespace="preserve">Lightens @color by a fixed amount, and saves the changed color
+in @result.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="result"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the lighter color</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="shade" c:identifier="clutter_color_shade">
+        <doc xml:whitespace="preserve">Shades @color by @factor and saves the modified color into @result.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="factor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the shade factor to apply</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="result"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the shaded color</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="subtract" c:identifier="clutter_color_subtract">
+        <doc xml:whitespace="preserve">Subtracts @b from @a and saves the resulting color inside @result.
+This function assumes that the components of @a are greater than the
+components of @b; the result is, otherwise, undefined.
+The alpha channel of @result is set as the minimum value
+between the alpha channels of @a and @b.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="b" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterColor</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+          <parameter name="result"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the result</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_hls" c:identifier="clutter_color_to_hls">
+        <doc xml:whitespace="preserve">Converts @color to the HLS format.
+The @hue value is in the 0 .. 360 range. The @luminance and</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="hue"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the hue value or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="luminance"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the luminance value or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="saturation"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the saturation value or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_pixel" c:identifier="clutter_color_to_pixel">
+        <doc xml:whitespace="preserve">Converts @color into a packed 32 bit integer, containing
+all the four 8 bit channels used by #ClutterColor.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a packed color</doc>
+          <type name="guint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="to_string"
+              c:identifier="clutter_color_to_string"
+              version="0.2">
+        <doc xml:whitespace="preserve">Returns a textual specification of @color in the hexadecimal form
+&lt;literal&gt;&amp;num;rrggbbaa&lt;/literal&gt;, where &lt;literal&gt;r&lt;/literal&gt;,
+&lt;literal&gt;g&lt;/literal&gt;, &lt;literal&gt;b&lt;/literal&gt; and &lt;literal&gt;a&lt;/literal&gt; are
+hexadecimal digits representing the red, green, blue and alpha components
+respectively.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly-allocated text string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+    </record>
+    <class name="ColorizeEffect"
+           c:symbol-prefix="colorize_effect"
+           c:type="ClutterColorizeEffect"
+           version="1.4"
+           parent="OffscreenEffect"
+           glib:type-name="ClutterColorizeEffect"
+           glib:get-type="clutter_colorize_effect_get_type"
+           glib:type-struct="ColorizeEffectClass">
+      <doc xml:whitespace="preserve">&lt;structname&gt;ClutterColorizeEffect&lt;/structname&gt; is an opaque structure
+whose members cannot be directly accessed</doc>
+      <constructor name="new"
+                   c:identifier="clutter_colorize_effect_new"
+                   version="1.4">
+        <doc xml:whitespace="preserve">Creates a new #ClutterColorizeEffect to be used with
+clutter_actor_add_effect()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterColorizeEffect or %NULL</doc>
+          <type name="Effect" c:type="ClutterEffect*"/>
+        </return-value>
+        <parameters>
+          <parameter name="tint" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the color to be used</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_tint"
+              c:identifier="clutter_colorize_effect_get_tint"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the tint used by @effect</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tint"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for the color used</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tint"
+              c:identifier="clutter_colorize_effect_set_tint"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the tint to be used when colorizing</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tint" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the color to be used</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="tint"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The tint to apply to the actor</doc>
+        <type name="Color"/>
+      </property>
+    </class>
+    <record name="ColorizeEffectClass"
+            c:type="ClutterColorizeEffectClass"
+            disguised="1"
+            glib:is-gtype-struct-for="ColorizeEffect">
+    </record>
+    <constant name="Community" value="269025085">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Constraint"
+           c:symbol-prefix="constraint"
+           c:type="ClutterConstraint"
+           version="1.4"
+           parent="ActorMeta"
+           abstract="1"
+           glib:type-name="ClutterConstraint"
+           glib:get-type="clutter_constraint_get_type"
+           glib:type-struct="ConstraintClass">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;ClutterConstraint&lt;/structname&gt; structure contains only
+private data and should be accessed using the provided API</doc>
+      <virtual-method name="update_allocation">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="allocation" transfer-ownership="none">
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="ActorMeta" c:type="ClutterActorMeta"/>
+      </field>
+    </class>
+    <record name="ConstraintClass"
+            c:type="ClutterConstraintClass"
+            glib:is-gtype-struct-for="Constraint"
+            version="1.4">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;ClutterConstraintClass&lt;/structname&gt; structure contains
+only private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="ActorMetaClass" c:type="ClutterActorMetaClass"/>
+      </field>
+      <field name="update_allocation">
+        <callback name="update_allocation">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="constraint" transfer-ownership="none">
+              <type name="Constraint" c:type="ClutterConstraint*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="allocation" transfer-ownership="none">
+              <type name="ActorBox" c:type="ClutterActorBox*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_constraint1" introspectable="0">
+        <callback name="_clutter_constraint1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_constraint2" introspectable="0">
+        <callback name="_clutter_constraint2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_constraint3" introspectable="0">
+        <callback name="_clutter_constraint3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_constraint4" introspectable="0">
+        <callback name="_clutter_constraint4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_constraint5" introspectable="0">
+        <callback name="_clutter_constraint5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_constraint6" introspectable="0">
+        <callback name="_clutter_constraint6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_constraint7" introspectable="0">
+        <callback name="_clutter_constraint7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_constraint8" introspectable="0">
+        <callback name="_clutter_constraint8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <interface name="Container"
+               c:symbol-prefix="container"
+               c:type="ClutterContainer"
+               version="0.4"
+               glib:type-name="ClutterContainer"
+               glib:get-type="clutter_container_get_type"
+               glib:type-struct="ContainerIface">
+      <doc xml:whitespace="preserve">#ClutterContainer is an opaque structure whose members cannot be directly
+accessed</doc>
+      <virtual-method name="actor_added">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="actor_removed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="add" invoker="add_actor" version="0.4">
+        <doc xml:whitespace="preserve">Adds a #ClutterActor to @container. This function will emit the
+"actor-added" signal. The actor should be parented to
+#ClutterContainer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the first #ClutterActor to add</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="child_notify" invoker="child_notify" version="1.6">
+        <doc xml:whitespace="preserve">Calls the &lt;function&gt;child_notify()&lt;/function&gt; virtual function of
+#ClutterContainer. The default implementation will emit the
+#ClutterContainer::child-notify signal.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="pspec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GParamSpec</doc>
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="create_child_meta"
+                      invoker="create_child_meta"
+                      version="1.2">
+        <doc xml:whitespace="preserve">Creates the #ClutterChildMeta wrapping @actor inside the
+class member is not set to %G_TYPE_INVALID.
+This function is only useful when adding a #ClutterActor to
+a #ClutterContainer implementation outside of the
+#ClutterContainer::add() virtual function implementation.
+Applications should not call this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="destroy_child_meta"
+                      invoker="destroy_child_meta"
+                      version="1.2">
+        <doc xml:whitespace="preserve">Destroys the #ClutterChildMeta wrapping @actor inside the
+This function is only useful when removing a #ClutterActor to
+a #ClutterContainer implementation outside of the
+#ClutterContainer::add() virtual function implementation.
+Applications should not call this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="foreach" invoker="foreach" version="0.4">
+        <doc xml:whitespace="preserve">Calls @callback for each child of @container that was added
+by the application (with clutter_container_add_actor()). Does
+not iterate over "internal" children that are part of the
+container's own implementation, if any.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">a function to be called for each child</doc>
+            <type name="Callback" c:type="ClutterCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="1">
+            <doc xml:whitespace="preserve">data to be passed to the function, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="foreach_with_internals"
+                      invoker="foreach_with_internals"
+                      version="1.0">
+        <doc xml:whitespace="preserve">Calls @callback for each child of @container, including "internal"
+children built in to the container itself that were never added
+by the application.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">a function to be called for each child</doc>
+            <type name="Callback" c:type="ClutterCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="1">
+            <doc xml:whitespace="preserve">data to be passed to the function, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_child_meta"
+                      invoker="get_child_meta"
+                      version="0.8">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterChildMeta which contains the data about the
+of @container or %NULL if the specifiec actor does not exist or the
+container is not configured to provide #ClutterChildMeta&lt;!-- --&gt;s</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #ClutterChildMeta for the @actor child</doc>
+          <type name="ChildMeta" c:type="ClutterChildMeta*"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor that is a child of @container.</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="lower" invoker="lower_child" version="0.6">
+        <doc xml:whitespace="preserve">Lowers @actor to @sibling level, in the depth ordering.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the actor to raise</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="sibling" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the sibling to lower to, or %NULL to lower to the bottom</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="raise" invoker="raise_child" version="0.6">
+        <doc xml:whitespace="preserve">Raises @actor to @sibling level, in the depth ordering.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the actor to raise</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="sibling" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the sibling to raise to, or %NULL to raise to the top</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="remove" invoker="remove_actor" version="0.4">
+        <doc xml:whitespace="preserve">Removes @actor from @container. The actor should be unparented, so
+if you want to keep it around you must hold a reference to it
+yourself, using g_object_ref(). When the actor has been removed,
+the "actor-removed" signal is emitted by @container.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="sort_depth_order"
+                      invoker="sort_depth_order"
+                      version="0.6">
+        <doc xml:whitespace="preserve">Sorts a container's children using their depth. This function should not
+be normally used by applications.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <method name="add"
+              c:identifier="clutter_container_add"
+              version="0.4"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Adds a list of #ClutterActor&lt;!-- --&gt;s to @container. Each time and
+actor is added, the "actor-added" signal is emitted. Each actor should
+be parented to @container, which takes a reference on the actor. You
+cannot add a #ClutterActor to more than one #ClutterContainer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the first #ClutterActor to add</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_actor"
+              c:identifier="clutter_container_add_actor"
+              version="0.4">
+        <doc xml:whitespace="preserve">Adds a #ClutterActor to @container. This function will emit the
+"actor-added" signal. The actor should be parented to
+#ClutterContainer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the first #ClutterActor to add</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_valist"
+              c:identifier="clutter_container_add_valist"
+              version="0.4"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Alternative va_list version of clutter_container_add().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the first #ClutterActor to add</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="var_args" transfer-ownership="none">
+            <doc xml:whitespace="preserve">list of actors to add, followed by %NULL</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_get"
+              c:identifier="clutter_container_child_get"
+              version="0.8"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets @container specific properties of an actor.
+In general, a copy is made of the property contents and the caller is
+responsible for freeing the memory in the appropriate manner for the type, for
+instance by calling g_free() or g_object_unref().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor that is a child of @container.</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="first_prop" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the first property to be set.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_get_property"
+              c:identifier="clutter_container_child_get_property"
+              version="0.8">
+        <doc xml:whitespace="preserve">Gets a container specific property of a child of @container, In general,
+a copy is made of the property contents and the caller is responsible for
+freeing the memory by calling g_value_unset().
+Note that clutter_container_child_set_property() is really intended for
+language bindings, clutter_container_child_set() is much more convenient
+for C programming.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor that is a child of @container.</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="property" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property to set.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value.</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_notify"
+              c:identifier="clutter_container_child_notify"
+              version="1.6">
+        <doc xml:whitespace="preserve">Calls the &lt;function&gt;child_notify()&lt;/function&gt; virtual function of
+#ClutterContainer. The default implementation will emit the
+#ClutterContainer::child-notify signal.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="pspec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GParamSpec</doc>
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_set"
+              c:identifier="clutter_container_child_set"
+              version="0.8"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets container specific properties on the child of a container.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor that is a child of @container.</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="first_prop" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the first property to be set.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_set_property"
+              c:identifier="clutter_container_child_set_property"
+              version="0.8">
+        <doc xml:whitespace="preserve">Sets a container-specific property on a child of @container.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor that is a child of @container.</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="property" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property to set.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value.</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_child_meta"
+              c:identifier="clutter_container_create_child_meta"
+              version="1.2">
+        <doc xml:whitespace="preserve">Creates the #ClutterChildMeta wrapping @actor inside the
+class member is not set to %G_TYPE_INVALID.
+This function is only useful when adding a #ClutterActor to
+a #ClutterContainer implementation outside of the
+#ClutterContainer::add() virtual function implementation.
+Applications should not call this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="destroy_child_meta"
+              c:identifier="clutter_container_destroy_child_meta"
+              version="1.2">
+        <doc xml:whitespace="preserve">Destroys the #ClutterChildMeta wrapping @actor inside the
+This function is only useful when removing a #ClutterActor to
+a #ClutterContainer implementation outside of the
+#ClutterContainer::add() virtual function implementation.
+Applications should not call this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_child_by_name"
+              c:identifier="clutter_container_find_child_by_name"
+              version="0.6">
+        <doc xml:whitespace="preserve">Finds a child actor of a container by its name. Search recurses
+into any child container.
+or %NULL if no actor with that name was found.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The child actor with the requested name,</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="child_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the requested child.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="foreach"
+              c:identifier="clutter_container_foreach"
+              version="0.4">
+        <doc xml:whitespace="preserve">Calls @callback for each child of @container that was added
+by the application (with clutter_container_add_actor()). Does
+not iterate over "internal" children that are part of the
+container's own implementation, if any.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">a function to be called for each child</doc>
+            <type name="Callback" c:type="ClutterCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to be passed to the function, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="foreach_with_internals"
+              c:identifier="clutter_container_foreach_with_internals"
+              version="1.0">
+        <doc xml:whitespace="preserve">Calls @callback for each child of @container, including "internal"
+children built in to the container itself that were never added
+by the application.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">a function to be called for each child</doc>
+            <type name="Callback" c:type="ClutterCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to be passed to the function, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_child_meta"
+              c:identifier="clutter_container_get_child_meta"
+              version="0.8">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterChildMeta which contains the data about the
+of @container or %NULL if the specifiec actor does not exist or the
+container is not configured to provide #ClutterChildMeta&lt;!-- --&gt;s</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #ClutterChildMeta for the @actor child</doc>
+          <type name="ChildMeta" c:type="ClutterChildMeta*"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor that is a child of @container.</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_children"
+              c:identifier="clutter_container_get_children"
+              version="0.4">
+        <doc xml:whitespace="preserve">Retrieves all the children of @container.
+of #ClutterActor&lt;!-- --&gt;s. Use g_list_free() on the returned
+list when done.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a list</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="Actor"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="lower_child"
+              c:identifier="clutter_container_lower_child"
+              version="0.6">
+        <doc xml:whitespace="preserve">Lowers @actor to @sibling level, in the depth ordering.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the actor to raise</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="sibling" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the sibling to lower to, or %NULL to lower to the bottom</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="raise_child"
+              c:identifier="clutter_container_raise_child"
+              version="0.6">
+        <doc xml:whitespace="preserve">Raises @actor to @sibling level, in the depth ordering.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the actor to raise</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="sibling" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the sibling to raise to, or %NULL to raise to the top</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove"
+              c:identifier="clutter_container_remove"
+              version="0.4"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Removes a %NULL terminated list of #ClutterActor&lt;!-- --&gt;s from
+around you must hold a reference to it yourself, using g_object_ref().
+Each time an actor is removed, the "actor-removed" signal is
+emitted by @container.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">first #ClutterActor to remove</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_actor"
+              c:identifier="clutter_container_remove_actor"
+              version="0.4">
+        <doc xml:whitespace="preserve">Removes @actor from @container. The actor should be unparented, so
+if you want to keep it around you must hold a reference to it
+yourself, using g_object_ref(). When the actor has been removed,
+the "actor-removed" signal is emitted by @container.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_valist"
+              c:identifier="clutter_container_remove_valist"
+              version="0.4"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Alternative va_list version of clutter_container_remove().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the first #ClutterActor to add</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="var_args" transfer-ownership="none">
+            <doc xml:whitespace="preserve">list of actors to remove, followed by %NULL</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sort_depth_order"
+              c:identifier="clutter_container_sort_depth_order"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sorts a container's children using their depth. This function should not
+be normally used by applications.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <glib:signal name="actor-added" version="0.4">
+        <doc xml:whitespace="preserve">The ::actor-added signal is emitted each time an actor
+has been added to @container.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new child that has been added to @container</doc>
+            <type name="Actor"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="actor-removed" version="0.4">
+        <doc xml:whitespace="preserve">The ::actor-removed signal is emitted each time an actor
+is removed from @container.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the child that has been removed from @container</doc>
+            <type name="Actor"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="child-notify" version="0.8">
+        <doc xml:whitespace="preserve">The ::child-notify signal is emitted each time a property is
+being set through the clutter_container_child_set() and
+clutter_container_child_set_property() calls.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the child that has had a property set</doc>
+            <type name="Actor"/>
+          </parameter>
+          <parameter name="pspec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GParamSpec of the property set</doc>
+            <type name="GObject.ParamSpec"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </interface>
+    <record name="ContainerIface"
+            c:type="ClutterContainerIface"
+            glib:is-gtype-struct-for="Container"
+            version="0.4">
+      <doc xml:whitespace="preserve">Base interface for container actors. The @add, @remove and @foreach
+virtual functions must be provided by any implementation; the other
+virtual functions are optional.</doc>
+      <field name="g_iface" readable="0" private="1">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="add">
+        <callback name="add">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the first #ClutterActor to add</doc>
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove">
+        <callback name="remove">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #ClutterActor</doc>
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="foreach">
+        <callback name="foreach">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="call"
+                       closure="2">
+              <doc xml:whitespace="preserve">a function to be called for each child</doc>
+              <type name="Callback" c:type="ClutterCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="2">
+              <doc xml:whitespace="preserve">data to be passed to the function, or %NULL</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="foreach_with_internals">
+        <callback name="foreach_with_internals">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="callback"
+                       transfer-ownership="none"
+                       scope="call"
+                       closure="2">
+              <doc xml:whitespace="preserve">a function to be called for each child</doc>
+              <type name="Callback" c:type="ClutterCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="2">
+              <doc xml:whitespace="preserve">data to be passed to the function, or %NULL</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="raise">
+        <callback name="raise">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the actor to raise</doc>
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="sibling" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the sibling to raise to, or %NULL to raise to the top</doc>
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="lower">
+        <callback name="lower">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the actor to raise</doc>
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="sibling" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the sibling to lower to, or %NULL to lower to the bottom</doc>
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="sort_depth_order">
+        <callback name="sort_depth_order">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="child_meta_type">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="create_child_meta">
+        <callback name="create_child_meta">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #ClutterActor</doc>
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="destroy_child_meta">
+        <callback name="destroy_child_meta">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #ClutterActor</doc>
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_child_meta">
+        <callback name="get_child_meta">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterChildMeta for the @actor child</doc>
+            <type name="ChildMeta" c:type="ClutterChildMeta*"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #ClutterActor that is a child of @container.</doc>
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="actor_added">
+        <callback name="actor_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="actor_removed">
+        <callback name="actor_removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="child_notify">
+        <callback name="child_notify">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #ClutterActor</doc>
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="pspec" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GParamSpec</doc>
+              <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <constant name="ContrastAdjust" value="269025058">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Control_L" value="65507">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Control_R" value="65508">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Copy" value="269025111">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="CrossingEvent" c:type="ClutterCrossingEvent" version="0.2">
+      <doc xml:whitespace="preserve">Event for the movement of the pointer across different actors</doc>
+      <field name="type" writable="1">
+        <type name="EventType" c:type="ClutterEventType"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="EventFlags" c:type="ClutterEventFlags"/>
+      </field>
+      <field name="stage" writable="1">
+        <type name="Stage" c:type="ClutterStage*"/>
+      </field>
+      <field name="source" writable="1">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </field>
+      <field name="x" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="device" writable="1">
+        <type name="InputDevice" c:type="ClutterInputDevice*"/>
+      </field>
+      <field name="related" writable="1">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </field>
+    </record>
+    <constant name="CruzeiroSign" value="16785570">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cut" value="269025112">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="CycleAngle" value="269025180">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_A" value="1761">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_BE" value="1762">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_CHE" value="1790">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_CHE_descender" value="16778422">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_CHE_vertstroke" value="16778424">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_DE" value="1764">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_DZHE" value="1727">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_E" value="1788">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_EF" value="1766">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_EL" value="1772">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_EM" value="1773">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_EN" value="1774">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_EN_descender" value="16778402">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_ER" value="1778">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_ES" value="1779">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_GHE" value="1767">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_GHE_bar" value="16778386">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_HA" value="1768">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_HARDSIGN" value="1791">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_HA_descender" value="16778418">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_I" value="1769">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_IE" value="1765">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_IO" value="1715">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_I_macron" value="16778466">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_JE" value="1720">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_KA" value="1771">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_KA_descender" value="16778394">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_KA_vertstroke" value="16778396">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_LJE" value="1721">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_NJE" value="1722">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_O" value="1775">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_O_bar" value="16778472">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_PE" value="1776">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_SCHWA" value="16778456">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_SHA" value="1787">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_SHCHA" value="1789">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_SHHA" value="16778426">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_SHORTI" value="1770">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_SOFTSIGN" value="1784">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_TE" value="1780">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_TSE" value="1763">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_U" value="1781">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_U_macron" value="16778478">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_U_straight" value="16778414">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_U_straight_bar" value="16778416">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_VE" value="1783">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_YA" value="1777">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_YERU" value="1785">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_YU" value="1760">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_ZE" value="1786">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_ZHE" value="1782">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_ZHE_descender" value="16778390">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_a" value="1729">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_be" value="1730">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_che" value="1758">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_che_descender" value="16778423">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_che_vertstroke" value="16778425">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_de" value="1732">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_dzhe" value="1711">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_e" value="1756">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_ef" value="1734">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_el" value="1740">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_em" value="1741">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_en" value="1742">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_en_descender" value="16778403">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_er" value="1746">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_es" value="1747">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_ghe" value="1735">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_ghe_bar" value="16778387">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_ha" value="1736">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_ha_descender" value="16778419">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_hardsign" value="1759">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_i" value="1737">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_i_macron" value="16778467">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_ie" value="1733">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_io" value="1699">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_je" value="1704">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_ka" value="1739">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_ka_descender" value="16778395">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_ka_vertstroke" value="16778397">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_lje" value="1705">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_nje" value="1706">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_o" value="1743">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_o_bar" value="16778473">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_pe" value="1744">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_schwa" value="16778457">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_sha" value="1755">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_shcha" value="1757">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_shha" value="16778427">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_shorti" value="1738">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_softsign" value="1752">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_te" value="1748">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_tse" value="1731">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_u" value="1749">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_u_macron" value="16778479">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_u_straight" value="16778415">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_u_straight_bar" value="16778417">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_ve" value="1751">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_ya" value="1745">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_yeru" value="1753">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_yu" value="1728">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_ze" value="1754">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_zhe" value="1750">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Cyrillic_zhe_descender" value="16778391">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="D" value="68">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="DOS" value="269025114">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Dabovedot" value="16784906">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Dcaron" value="463">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="DeformEffect"
+           c:symbol-prefix="deform_effect"
+           c:type="ClutterDeformEffect"
+           version="1.4"
+           parent="OffscreenEffect"
+           abstract="1"
+           glib:type-name="ClutterDeformEffect"
+           glib:get-type="clutter_deform_effect_get_type"
+           glib:type-struct="DeformEffectClass">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;ClutterDeformEffect&lt;/structname&gt; structure contains
+only private data and should be accessed using the provided API</doc>
+      <virtual-method name="deform_vertex">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="vertex" transfer-ownership="none">
+            <type name="Cogl.TextureVertex" c:type="CoglTextureVertex*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_back_material"
+              c:identifier="clutter_deform_effect_get_back_material"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the handle to the back face material used by @effect
+The returned material is owned by the #ClutterDeformEffect and it
+should not be freed directly</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a handle for the material, or %NULL.</doc>
+          <type name="Cogl.Handle" c:type="CoglHandle"/>
+        </return-value>
+      </method>
+      <method name="get_n_tiles"
+              c:identifier="clutter_deform_effect_get_n_tiles"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the number of horizontal and vertical tiles used to sub-divide
+the actor's geometry during the effect</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_tiles"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the number of horizontal tiles, or %NULL</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+          <parameter name="y_tiles"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the number of vertical tiles, or %NULL</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="invalidate"
+              c:identifier="clutter_deform_effect_invalidate"
+              version="1.4">
+        <doc xml:whitespace="preserve">Invalidates the @effect&lt;!-- --&gt;'s vertices and, if it is associated
+to an actor, it will queue a redraw</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_back_material"
+              c:identifier="clutter_deform_effect_set_back_material"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the material that should be used when drawing the back face
+of the actor during a deformation
+The #ClutterDeformEffect will take a reference on the material's
+handle</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="material" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a handle to a Cogl material</doc>
+            <type name="Cogl.Handle" c:type="CoglHandle"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_n_tiles"
+              c:identifier="clutter_deform_effect_set_n_tiles"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the number of horizontal and vertical tiles to be used
+when applying the effect
+More tiles allow a finer grained deformation at the expenses
+of computation</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_tiles" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of horizontal tiles</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="y_tiles" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of vertical tiles</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="back-material"
+                version="1.4"
+                introspectable="0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">A material to be used when painting the back of the actor
+to which this effect has been applied
+By default, no material will be used</doc>
+        <type/>
+      </property>
+      <property name="x-tiles"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The number of horizontal tiles. The bigger the number, the
+smaller the tiles</doc>
+        <type name="guint"/>
+      </property>
+      <property name="y-tiles"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The number of vertical tiles. The bigger the number, the
+smaller the tiles</doc>
+        <type name="guint"/>
+      </property>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="OffscreenEffect" c:type="ClutterOffscreenEffect"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="DeformEffectPrivate" c:type="ClutterDeformEffectPrivate*"/>
+      </field>
+    </class>
+    <record name="DeformEffectClass"
+            c:type="ClutterDeformEffectClass"
+            glib:is-gtype-struct-for="DeformEffect"
+            version="1.4">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;ClutterDeformEffectClass&lt;/structname&gt; structure contains
+only private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="OffscreenEffectClass"
+              c:type="ClutterOffscreenEffectClass"/>
+      </field>
+      <field name="deform_vertex">
+        <callback name="deform_vertex">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="effect" transfer-ownership="none">
+              <type name="DeformEffect" c:type="ClutterDeformEffect*"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <type name="gfloat" c:type="gfloat"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="gfloat" c:type="gfloat"/>
+            </parameter>
+            <parameter name="vertex" transfer-ownership="none">
+              <type name="Cogl.TextureVertex" c:type="CoglTextureVertex*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_deform1" introspectable="0">
+        <callback name="_clutter_deform1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_deform2" introspectable="0">
+        <callback name="_clutter_deform2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_deform3" introspectable="0">
+        <callback name="_clutter_deform3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_deform4" introspectable="0">
+        <callback name="_clutter_deform4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_deform5" introspectable="0">
+        <callback name="_clutter_deform5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_deform6" introspectable="0">
+        <callback name="_clutter_deform6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_deform7" introspectable="0">
+        <callback name="_clutter_deform7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="DeformEffectPrivate"
+            c:type="ClutterDeformEffectPrivate"
+            disguised="1">
+    </record>
+    <constant name="Delete" value="65535">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="DesaturateEffect"
+           c:symbol-prefix="desaturate_effect"
+           c:type="ClutterDesaturateEffect"
+           version="1.4"
+           parent="OffscreenEffect"
+           glib:type-name="ClutterDesaturateEffect"
+           glib:get-type="clutter_desaturate_effect_get_type"
+           glib:type-struct="DesaturateEffectClass">
+      <doc xml:whitespace="preserve">&lt;structname&gt;ClutterDesaturateEffect&lt;/structname&gt; is an opaque structure
+whose members cannot be directly accessed</doc>
+      <constructor name="new"
+                   c:identifier="clutter_desaturate_effect_new"
+                   version="1.4">
+        <doc xml:whitespace="preserve">Creates a new #ClutterDesaturateEffect to be used with
+clutter_actor_add_effect()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterDesaturateEffect or %NULL</doc>
+          <type name="Effect" c:type="ClutterEffect*"/>
+        </return-value>
+        <parameters>
+          <parameter name="factor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the desaturation factor, between 0.0 and 1.0</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_factor"
+              c:identifier="clutter_desaturate_effect_get_factor"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the desaturation factor of @effect</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the desaturation factor</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="set_factor"
+              c:identifier="clutter_desaturate_effect_set_factor"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the desaturation factor for @effect, with 0.0 being "do not desaturate"
+and 1.0 being "fully desaturate"</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="factor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the desaturation factor, between 0.0 and 1.0</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="factor"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The desaturation factor, between 0.0 (no desaturation) and 1.0 (full
+desaturation).</doc>
+        <type name="gdouble"/>
+      </property>
+    </class>
+    <record name="DesaturateEffectClass"
+            c:type="ClutterDesaturateEffectClass"
+            disguised="1"
+            glib:is-gtype-struct-for="DesaturateEffect">
+    </record>
+    <class name="DeviceManager"
+           c:symbol-prefix="device_manager"
+           c:type="ClutterDeviceManager"
+           version="1.2"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="ClutterDeviceManager"
+           glib:get-type="clutter_device_manager_get_type"
+           glib:type-struct="DeviceManagerClass">
+      <doc xml:whitespace="preserve">The #ClutterDeviceManager structure contains only private data</doc>
+      <function name="get_default"
+                c:identifier="clutter_device_manager_get_default"
+                version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the device manager singleton
+The returned instance is owned by Clutter and it should not be
+modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #ClutterDeviceManager singleton.</doc>
+          <type name="DeviceManager" c:type="ClutterDeviceManager*"/>
+        </return-value>
+      </function>
+      <virtual-method name="add_device">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="device" transfer-ownership="none">
+            <type name="InputDevice" c:type="ClutterInputDevice*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_core_device"
+                      invoker="get_core_device"
+                      version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the core #ClutterInputDevice of type @device_type
+Core devices are devices created automatically by the default
+Clutter backend
+returned device is owned by the #ClutterDeviceManager and should
+not be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterInputDevice or %NULL. The</doc>
+          <type name="InputDevice" c:type="ClutterInputDevice*"/>
+        </return-value>
+        <parameters>
+          <parameter name="device_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type of the core device</doc>
+            <type name="InputDeviceType" c:type="ClutterInputDeviceType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_device" invoker="get_device" version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterInputDevice with the given @device_id
+returned device is owned by the #ClutterDeviceManager and should
+never be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterInputDevice or %NULL. The</doc>
+          <type name="InputDevice" c:type="ClutterInputDevice*"/>
+        </return-value>
+        <parameters>
+          <parameter name="device_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the integer id of a device</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_devices">
+        <return-value transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="remove_device">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="device" transfer-ownership="none">
+            <type name="InputDevice" c:type="ClutterInputDevice*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_core_device"
+              c:identifier="clutter_device_manager_get_core_device"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the core #ClutterInputDevice of type @device_type
+Core devices are devices created automatically by the default
+Clutter backend
+returned device is owned by the #ClutterDeviceManager and should
+not be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterInputDevice or %NULL. The</doc>
+          <type name="InputDevice" c:type="ClutterInputDevice*"/>
+        </return-value>
+        <parameters>
+          <parameter name="device_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type of the core device</doc>
+            <type name="InputDeviceType" c:type="ClutterInputDeviceType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_device"
+              c:identifier="clutter_device_manager_get_device"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterInputDevice with the given @device_id
+returned device is owned by the #ClutterDeviceManager and should
+never be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterInputDevice or %NULL. The</doc>
+          <type name="InputDevice" c:type="ClutterInputDevice*"/>
+        </return-value>
+        <parameters>
+          <parameter name="device_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the integer id of a device</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_devices"
+              c:identifier="clutter_device_manager_list_devices"
+              version="1.2">
+        <doc xml:whitespace="preserve">Lists all currently registered input devices
+a newly allocated list of #ClutterInputDevice objects. Use
+g_slist_free() to deallocate it when done</doc>
+        <return-value transfer-ownership="container">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="InputDevice"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="peek_devices"
+              c:identifier="clutter_device_manager_peek_devices"
+              version="1.2">
+        <doc xml:whitespace="preserve">Lists all currently registered input devices
+a pointer to the internal list of #ClutterInputDevice objects. The
+returned list is owned by the #ClutterDeviceManager and should never
+be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="InputDevice"/>
+          </type>
+        </return-value>
+      </method>
+      <property name="backend"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="Backend"/>
+      </property>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="DeviceManagerPrivate"
+              c:type="ClutterDeviceManagerPrivate*"/>
+      </field>
+      <glib:signal name="device-added" version="1.2">
+        <doc xml:whitespace="preserve">The ::device-added signal is emitted each time a device has been
+added to the #ClutterDeviceManager</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="device" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the newly added #ClutterInputDevice</doc>
+            <type name="InputDevice"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="device-removed" version="1.2">
+        <doc xml:whitespace="preserve">The ::device-removed signal is emitted each time a device has been
+removed from the #ClutterDeviceManager</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="device" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the removed #ClutterInputDevice</doc>
+            <type name="InputDevice"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="DeviceManagerClass"
+            c:type="ClutterDeviceManagerClass"
+            glib:is-gtype-struct-for="DeviceManager"
+            version="1.2">
+      <doc xml:whitespace="preserve">The #ClutterDeviceManagerClass structure contains only private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="get_devices">
+        <callback name="get_devices">
+          <return-value transfer-ownership="none">
+            <type name="GLib.SList" c:type="GSList*">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </return-value>
+          <parameters>
+            <parameter name="device_manager" transfer-ownership="none">
+              <type name="DeviceManager" c:type="ClutterDeviceManager*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_core_device">
+        <callback name="get_core_device">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterInputDevice or %NULL. The</doc>
+            <type name="InputDevice" c:type="ClutterInputDevice*"/>
+          </return-value>
+          <parameters>
+            <parameter name="device_manager" transfer-ownership="none">
+              <type name="DeviceManager" c:type="ClutterDeviceManager*"/>
+            </parameter>
+            <parameter name="device_type" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the type of the core device</doc>
+              <type name="InputDeviceType" c:type="ClutterInputDeviceType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_device">
+        <callback name="get_device">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterInputDevice or %NULL. The</doc>
+            <type name="InputDevice" c:type="ClutterInputDevice*"/>
+          </return-value>
+          <parameters>
+            <parameter name="device_manager" transfer-ownership="none">
+              <type name="DeviceManager" c:type="ClutterDeviceManager*"/>
+            </parameter>
+            <parameter name="device_id" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the integer id of a device</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_device">
+        <callback name="add_device">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="DeviceManager" c:type="ClutterDeviceManager*"/>
+            </parameter>
+            <parameter name="device" transfer-ownership="none">
+              <type name="InputDevice" c:type="ClutterInputDevice*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove_device">
+        <callback name="remove_device">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="DeviceManager" c:type="ClutterDeviceManager*"/>
+            </parameter>
+            <parameter name="device" transfer-ownership="none">
+              <type name="InputDevice" c:type="ClutterInputDevice*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_padding" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="8">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <record name="DeviceManagerPrivate"
+            c:type="ClutterDeviceManagerPrivate"
+            disguised="1">
+    </record>
+    <constant name="Display" value="269025113">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Documents" value="269025115">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="DongSign" value="16785579">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Down" value="65364">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="DragAction"
+           c:symbol-prefix="drag_action"
+           c:type="ClutterDragAction"
+           version="1.4"
+           parent="Action"
+           glib:type-name="ClutterDragAction"
+           glib:get-type="clutter_drag_action_get_type"
+           glib:type-struct="DragActionClass">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;ClutterDragAction&lt;/structname&gt; structure contains only
+private data and should be accessed using the provided API</doc>
+      <constructor name="new"
+                   c:identifier="clutter_drag_action_new"
+                   version="1.4">
+        <doc xml:whitespace="preserve">Creates a new #ClutterDragAction instance</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterDragAction</doc>
+          <type name="Action" c:type="ClutterAction*"/>
+        </return-value>
+      </constructor>
+      <virtual-method name="drag_begin">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="event_x" transfer-ownership="none">
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="event_y" transfer-ownership="none">
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <type name="ModifierType" c:type="ClutterModifierType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="drag_end">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="event_x" transfer-ownership="none">
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="event_y" transfer-ownership="none">
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <type name="ModifierType" c:type="ClutterModifierType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="drag_motion">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="delta_x" transfer-ownership="none">
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="delta_y" transfer-ownership="none">
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_drag_axis"
+              c:identifier="clutter_drag_action_get_drag_axis"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the axis constraint set by clutter_drag_action_set_drag_axis()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the axis constraint</doc>
+          <type name="DragAxis" c:type="ClutterDragAxis"/>
+        </return-value>
+      </method>
+      <method name="get_drag_handle"
+              c:identifier="clutter_drag_action_get_drag_handle"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the drag handle set by clutter_drag_action_set_drag_handle()
+handle, or %NULL if none was set</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterActor, used as the drag</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="get_drag_threshold"
+              c:identifier="clutter_drag_action_get_drag_threshold"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the values set by clutter_drag_action_set_drag_threshold()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_threshold"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the horizontal drag threshold value, in pixels</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+          <parameter name="y_threshold"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the vertical drag threshold value, in pixels</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_motion_coords"
+              c:identifier="clutter_drag_action_get_motion_coords"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the coordinates, in stage space, of the latest motion
+event during the dragging</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="motion_x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the latest motion event's X coordinate</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="motion_y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the latest motion event's Y coordinate</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_press_coords"
+              c:identifier="clutter_drag_action_get_press_coords"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the coordinates, in stage space, of the press event
+that started the dragging</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="press_x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the press event's X coordinate</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="press_y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the press event's Y coordinate</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_drag_axis"
+              c:identifier="clutter_drag_action_set_drag_axis"
+              version="1.4">
+        <doc xml:whitespace="preserve">Restricts the dragging action to a specific axis</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="axis" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the axis to constraint the dragging to</doc>
+            <type name="DragAxis" c:type="ClutterDragAxis"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_drag_handle"
+              c:identifier="clutter_drag_action_set_drag_handle"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the actor to be used as the drag handle</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="handle" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_drag_threshold"
+              c:identifier="clutter_drag_action_set_drag_threshold"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the horizontal and vertical drag thresholds that must be
+cleared by the pointer before @action can begin the dragging</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_threshold" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a distance on the horizontal axis, in pixels</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="y_threshold" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a distance on the vertical axis, in pixels</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="drag-axis"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Constraints the dragging action to the specified axis</doc>
+        <type name="DragAxis"/>
+      </property>
+      <property name="drag-handle"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #ClutterActor that is effectively being dragged
+A #ClutterDragAction will, be default, use the #ClutterActor that
+has been attached to the action; it is possible to create a
+separate #ClutterActor and use it instead.
+Setting this property has no effect on the #ClutterActor argument
+passed to the #ClutterDragAction signals</doc>
+        <type name="Actor"/>
+      </property>
+      <property name="x-drag-threshold"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The horizontal threshold, in pixels, that begins a drag action
+When set to a non-zero value, #ClutterDragAction will only emit
+#ClutterDragAction::drag-begin if the pointer has moved
+horizontally at least of the given amount of pixels since
+the button press event</doc>
+        <type name="guint"/>
+      </property>
+      <property name="y-drag-threshold"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The vertical threshold, in pixels, that begins a drag action
+When set to a non-zero value, #ClutterDragAction will only emit
+#ClutterDragAction::drag-begin if the pointer has moved
+vertically at least of the given amount of pixels since
+the button press event</doc>
+        <type name="guint"/>
+      </property>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="Action" c:type="ClutterAction"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="DragActionPrivate" c:type="ClutterDragActionPrivate*"/>
+      </field>
+      <glib:signal name="drag-begin" version="1.4">
+        <doc xml:whitespace="preserve">The ::drag-begin signal is emitted when the #ClutterDragAction
+starts the dragging
+The emission of this signal can be delayed by using the
+#ClutterDragAction:x-drag-threshold and
+#ClutterDragAction:y-drag-threshold properties</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterActor attached to the action</doc>
+            <type name="Actor"/>
+          </parameter>
+          <parameter name="event_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the X coordinate (in stage space) of the press event</doc>
+            <type name="gfloat"/>
+          </parameter>
+          <parameter name="event_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the Y coordinate (in stage space) of the press event</doc>
+            <type name="gfloat"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the modifiers of the press event</doc>
+            <type name="ModifierType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="drag-end" version="1.4">
+        <doc xml:whitespace="preserve">The ::drag-end signal is emitted at the end of the dragging,
+when the pointer button's is released
+This signal is emitted if and only if the #ClutterDragAction::drag-begin
+signal has been emitted first</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterActor attached to the action</doc>
+            <type name="Actor"/>
+          </parameter>
+          <parameter name="event_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the X coordinate (in stage space) of the release event</doc>
+            <type name="gfloat"/>
+          </parameter>
+          <parameter name="event_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the Y coordinate (in stage space) of the release event</doc>
+            <type name="gfloat"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the modifiers of the release event</doc>
+            <type name="ModifierType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="drag-motion" version="1.4">
+        <doc xml:whitespace="preserve">The ::drag-motion signal is emitted for each motion event after
+the #ClutterDragAction::drag-begin signal has been emitted.
+The components of the distance between the press event and the
+latest motion event are computed in the actor's coordinate space,
+to take into account eventual transformations. If you want the
+stage coordinates of the latest motion event you can use
+clutter_drag_action_get_motion_coords().
+The default handler of the signal will call clutter_actor_move_by()
+either on @actor or, if set, of #ClutterDragAction:drag-handle using
+the @delta_x and @delta_y components of the dragging motion. If you
+want to override the default behaviour, you can connect to this
+signal and call g_signal_stop_emission_by_name() from within your
+callback.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterActor attached to the action</doc>
+            <type name="Actor"/>
+          </parameter>
+          <parameter name="delta_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the X component of the distance between the press event that began the dragging and the current position of the pointer, as of the latest motion event</doc>
+            <type name="gfloat"/>
+          </parameter>
+          <parameter name="delta_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the Y component of the distance between the press event that began the dragging and the current position of the pointer, as of the latest motion event</doc>
+            <type name="gfloat"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="DragActionClass"
+            c:type="ClutterDragActionClass"
+            glib:is-gtype-struct-for="DragAction"
+            version="1.4">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;ClutterDragActionClass&lt;/structname&gt; structure contains
+only private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="ActionClass" c:type="ClutterActionClass"/>
+      </field>
+      <field name="drag_begin">
+        <callback name="drag_begin">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="action" transfer-ownership="none">
+              <type name="DragAction" c:type="ClutterDragAction*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event_x" transfer-ownership="none">
+              <type name="gfloat" c:type="gfloat"/>
+            </parameter>
+            <parameter name="event_y" transfer-ownership="none">
+              <type name="gfloat" c:type="gfloat"/>
+            </parameter>
+            <parameter name="modifiers" transfer-ownership="none">
+              <type name="ModifierType" c:type="ClutterModifierType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="drag_motion">
+        <callback name="drag_motion">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="action" transfer-ownership="none">
+              <type name="DragAction" c:type="ClutterDragAction*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="delta_x" transfer-ownership="none">
+              <type name="gfloat" c:type="gfloat"/>
+            </parameter>
+            <parameter name="delta_y" transfer-ownership="none">
+              <type name="gfloat" c:type="gfloat"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="drag_end">
+        <callback name="drag_end">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="action" transfer-ownership="none">
+              <type name="DragAction" c:type="ClutterDragAction*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="event_x" transfer-ownership="none">
+              <type name="gfloat" c:type="gfloat"/>
+            </parameter>
+            <parameter name="event_y" transfer-ownership="none">
+              <type name="gfloat" c:type="gfloat"/>
+            </parameter>
+            <parameter name="modifiers" transfer-ownership="none">
+              <type name="ModifierType" c:type="ClutterModifierType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_drag_action1" introspectable="0">
+        <callback name="_clutter_drag_action1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_drag_action2" introspectable="0">
+        <callback name="_clutter_drag_action2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_drag_action3" introspectable="0">
+        <callback name="_clutter_drag_action3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_drag_action4" introspectable="0">
+        <callback name="_clutter_drag_action4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_drag_action5" introspectable="0">
+        <callback name="_clutter_drag_action5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="DragActionPrivate"
+            c:type="ClutterDragActionPrivate"
+            disguised="1">
+    </record>
+    <enumeration name="DragAxis"
+                 version="1.4"
+                 glib:type-name="ClutterDragAxis"
+                 glib:get-type="clutter_drag_axis_get_type"
+                 c:type="ClutterDragAxis">
+      <doc xml:whitespace="preserve">The axis of the constraint that should be applied on the
+dragging action</doc>
+      <member name="axis_none"
+              value="0"
+              c:identifier="CLUTTER_DRAG_AXIS_NONE"
+              glib:nick="axis-none"/>
+      <member name="x_axis"
+              value="1"
+              c:identifier="CLUTTER_DRAG_X_AXIS"
+              glib:nick="x-axis"/>
+      <member name="y_axis"
+              value="2"
+              c:identifier="CLUTTER_DRAG_Y_AXIS"
+              glib:nick="y-axis"/>
+    </enumeration>
+    <constant name="Dstroke" value="464">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="E" value="69">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ENG" value="957">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ETH" value="208">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Eabovedot" value="972">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Eacute" value="201">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ebelowdot" value="16785080">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ecaron" value="460">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ecircumflex" value="202">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ecircumflexacute" value="16785086">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ecircumflexbelowdot" value="16785094">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ecircumflexgrave" value="16785088">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ecircumflexhook" value="16785090">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ecircumflextilde" value="16785092">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="EcuSign" value="16785568">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ediaeresis" value="203">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Effect"
+           c:symbol-prefix="effect"
+           c:type="ClutterEffect"
+           version="1.4"
+           parent="ActorMeta"
+           abstract="1"
+           glib:type-name="ClutterEffect"
+           glib:get-type="clutter_effect_get_type"
+           glib:type-struct="EffectClass">
+      <doc xml:whitespace="preserve">The #ClutterEffect structure contains only private data and should
+be accessed using the provided API</doc>
+      <virtual-method name="get_paint_volume">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="volume" transfer-ownership="none">
+            <type name="PaintVolume" c:type="ClutterPaintVolume*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="post_paint">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="pre_paint">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="ActorMeta" c:type="ClutterActorMeta"/>
+      </field>
+    </class>
+    <record name="EffectClass"
+            c:type="ClutterEffectClass"
+            glib:is-gtype-struct-for="Effect"
+            version="1.4">
+      <doc xml:whitespace="preserve">The #ClutterEffectClass structure contains only private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="ActorMetaClass" c:type="ClutterActorMetaClass"/>
+      </field>
+      <field name="pre_paint">
+        <callback name="pre_paint">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="effect" transfer-ownership="none">
+              <type name="Effect" c:type="ClutterEffect*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="post_paint">
+        <callback name="post_paint">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="effect" transfer-ownership="none">
+              <type name="Effect" c:type="ClutterEffect*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_paint_volume">
+        <callback name="get_paint_volume">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="effect" transfer-ownership="none">
+              <type name="Effect" c:type="ClutterEffect*"/>
+            </parameter>
+            <parameter name="volume" transfer-ownership="none">
+              <type name="PaintVolume" c:type="ClutterPaintVolume*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_effect2" introspectable="0">
+        <callback name="_clutter_effect2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_effect3" introspectable="0">
+        <callback name="_clutter_effect3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_effect4" introspectable="0">
+        <callback name="_clutter_effect4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_effect5" introspectable="0">
+        <callback name="_clutter_effect5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_effect6" introspectable="0">
+        <callback name="_clutter_effect6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <constant name="Egrave" value="200">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ehook" value="16785082">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Eisu_Shift" value="65327">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Eisu_toggle" value="65328">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Eject" value="269025068">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Emacron" value="938">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="End" value="65367">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Eogonek" value="458">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Escape" value="65307">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Eth" value="208">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Etilde" value="16785084">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="EuroSign" value="8364">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <union name="Event"
+           c:type="ClutterEvent"
+           version="0.2"
+           glib:type-name="ClutterEvent"
+           glib:get-type="clutter_event_get_type"
+           c:symbol-prefix="event">
+      <doc xml:whitespace="preserve">Generic event wrapper.</doc>
+      <field name="type" readable="0" private="1">
+        <type name="EventType" c:type="ClutterEventType"/>
+      </field>
+      <field name="any" readable="0" private="1">
+        <type name="AnyEvent" c:type="ClutterAnyEvent"/>
+      </field>
+      <field name="button" readable="0" private="1">
+        <type name="ButtonEvent" c:type="ClutterButtonEvent"/>
+      </field>
+      <field name="key" readable="0" private="1">
+        <type name="KeyEvent" c:type="ClutterKeyEvent"/>
+      </field>
+      <field name="motion" readable="0" private="1">
+        <type name="MotionEvent" c:type="ClutterMotionEvent"/>
+      </field>
+      <field name="scroll" readable="0" private="1">
+        <type name="ScrollEvent" c:type="ClutterScrollEvent"/>
+      </field>
+      <field name="stage_state" readable="0" private="1">
+        <type name="StageStateEvent" c:type="ClutterStageStateEvent"/>
+      </field>
+      <field name="crossing" readable="0" private="1">
+        <type name="CrossingEvent" c:type="ClutterCrossingEvent"/>
+      </field>
+      <constructor name="new" c:identifier="clutter_event_new">
+        <doc xml:whitespace="preserve">Creates a new #ClutterEvent of the specified type.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly allocated #ClutterEvent.</doc>
+          <type name="Event" c:type="ClutterEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The type of event.</doc>
+            <type name="EventType" c:type="ClutterEventType"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy" c:identifier="clutter_event_copy">
+        <doc xml:whitespace="preserve">Copies @event.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A newly allocated #ClutterEvent</doc>
+          <type name="Event" c:type="ClutterEvent*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="clutter_event_free">
+        <doc xml:whitespace="preserve">Frees all resources used by @event.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_axes"
+              c:identifier="clutter_event_get_axes"
+              version="1.6">
+        <doc xml:whitespace="preserve">Retrieves the array of axes values attached to the event.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an array of axis values</doc>
+          <type name="gdouble" c:type="gdouble*"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_axes"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the number of axes returned</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_button"
+              c:identifier="clutter_event_get_button"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the button number of @event</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the button number</doc>
+          <type name="guint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="get_click_count"
+              c:identifier="clutter_event_get_click_count"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the number of clicks of @event</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the click count</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_coords"
+              c:identifier="clutter_event_get_coords"
+              version="0.4">
+        <doc xml:whitespace="preserve">Retrieves the coordinates of @event and puts them into @x and @y.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the X coordinate, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the Y coordinate, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_device"
+              c:identifier="clutter_event_get_device"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterInputDevice for the event.
+The #ClutterInputDevice structure is completely opaque and should
+be cast to the platform-specific implementation.
+returned device is owned by the #ClutterEvent and it should not
+be unreferenced</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #ClutterInputDevice or %NULL. The</doc>
+          <type name="InputDevice" c:type="ClutterInputDevice*"/>
+        </return-value>
+      </method>
+      <method name="get_device_id" c:identifier="clutter_event_get_device_id">
+        <doc xml:whitespace="preserve">Retrieves the events device id if set.
+no specific device set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A unique identifier for the device or -1 if the event has</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_device_type"
+              c:identifier="clutter_event_get_device_type"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the type of the device for @event
+any is set</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #ClutterInputDeviceType for the device, if</doc>
+          <type name="InputDeviceType" c:type="ClutterInputDeviceType"/>
+        </return-value>
+      </method>
+      <method name="get_flags"
+              c:identifier="clutter_event_get_flags"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterEventFlags of @event</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the event flags</doc>
+          <type name="EventFlags" c:type="ClutterEventFlags"/>
+        </return-value>
+      </method>
+      <method name="get_key_code"
+              c:identifier="clutter_event_get_key_code"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the keycode of the key that caused @event</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The keycode representing the key</doc>
+          <type name="guint16" c:type="guint16"/>
+        </return-value>
+      </method>
+      <method name="get_key_symbol"
+              c:identifier="clutter_event_get_key_symbol"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the key symbol of @event</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the key symbol representing the key</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_key_unicode"
+              c:identifier="clutter_event_get_key_unicode">
+        <doc xml:whitespace="preserve">Retrieves the unicode value for the key that caused @keyev.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The unicode value representing the key</doc>
+          <type name="guint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="get_related"
+              c:identifier="clutter_event_get_related"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the related actor of a crossing event.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the related #ClutterActor, or %NULL</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="get_scroll_direction"
+              c:identifier="clutter_event_get_scroll_direction"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the direction of the scrolling of @event</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the scrolling direction</doc>
+          <type name="ScrollDirection" c:type="ClutterScrollDirection"/>
+        </return-value>
+      </method>
+      <method name="get_source"
+              c:identifier="clutter_event_get_source"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the source #ClutterActor the event originated from, or
+NULL if the event has no source.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterActor</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="get_source_device"
+              c:identifier="clutter_event_get_source_device"
+              version="1.6">
+        <doc xml:whitespace="preserve">Retrieves the hardware device that originated the event.
+If you need the virtual device, use clutter_event_get_device().
+If no hardware device originated this event, this function will
+return the same device as clutter_event_get_device().
+or %NULL</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to a #ClutterInputDevice</doc>
+          <type name="InputDevice" c:type="ClutterInputDevice*"/>
+        </return-value>
+      </method>
+      <method name="get_stage"
+              c:identifier="clutter_event_get_stage"
+              version="0.8">
+        <doc xml:whitespace="preserve">Retrieves the source #ClutterStage the event originated for, or
+%NULL if the event has no stage.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterStage</doc>
+          <type name="Stage" c:type="ClutterStage*"/>
+        </return-value>
+      </method>
+      <method name="get_state"
+              c:identifier="clutter_event_get_state"
+              version="0.4">
+        <doc xml:whitespace="preserve">Retrieves the modifier state of the event.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the modifier state parameter, or 0</doc>
+          <type name="ModifierType" c:type="ClutterModifierType"/>
+        </return-value>
+      </method>
+      <method name="get_time"
+              c:identifier="clutter_event_get_time"
+              version="0.4">
+        <doc xml:whitespace="preserve">Retrieves the time of the event.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the time of the event, or %CLUTTER_CURRENT_TIME</doc>
+          <type name="guint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="put" c:identifier="clutter_event_put" version="0.6">
+        <doc xml:whitespace="preserve">Puts a copy of the event on the back of the event queue. The event will
+have the %CLUTTER_EVENT_FLAG_SYNTHETIC flag set. If the source is set
+event signals will be emitted for this source and capture/bubbling for
+its ancestors. If the source is not set it will be generated by picking
+or use the actor that currently has keyboard focus</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_device"
+              c:identifier="clutter_event_set_device"
+              version="1.6">
+        <doc xml:whitespace="preserve">Sets the device for @event.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="device" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterInputDevice</doc>
+            <type name="InputDevice" c:type="ClutterInputDevice*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="type" c:identifier="clutter_event_type">
+        <doc xml:whitespace="preserve">Retrieves the type of the event.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterEventType</doc>
+          <type name="EventType" c:type="ClutterEventType"/>
+        </return-value>
+      </method>
+    </union>
+    <bitfield name="EventFlags"
+              version="0.6"
+              glib:type-name="ClutterEventFlags"
+              glib:get-type="clutter_event_flags_get_type"
+              c:type="ClutterEventFlags">
+      <doc xml:whitespace="preserve">Flags for the #ClutterEvent</doc>
+      <member name="none"
+              value="0"
+              c:identifier="CLUTTER_EVENT_NONE"
+              glib:nick="none"/>
+      <member name="flag_synthetic"
+              value="1"
+              c:identifier="CLUTTER_EVENT_FLAG_SYNTHETIC"
+              glib:nick="flag-synthetic"/>
+    </bitfield>
+    <enumeration name="EventType"
+                 version="0.4"
+                 glib:type-name="ClutterEventType"
+                 glib:get-type="clutter_event_type_get_type"
+                 c:type="ClutterEventType">
+      <doc xml:whitespace="preserve">Types of events.</doc>
+      <member name="nothing"
+              value="0"
+              c:identifier="CLUTTER_NOTHING"
+              glib:nick="nothing"/>
+      <member name="key_press"
+              value="1"
+              c:identifier="CLUTTER_KEY_PRESS"
+              glib:nick="key-press"/>
+      <member name="key_release"
+              value="2"
+              c:identifier="CLUTTER_KEY_RELEASE"
+              glib:nick="key-release"/>
+      <member name="motion"
+              value="3"
+              c:identifier="CLUTTER_MOTION"
+              glib:nick="motion"/>
+      <member name="enter"
+              value="4"
+              c:identifier="CLUTTER_ENTER"
+              glib:nick="enter"/>
+      <member name="leave"
+              value="5"
+              c:identifier="CLUTTER_LEAVE"
+              glib:nick="leave"/>
+      <member name="button_press"
+              value="6"
+              c:identifier="CLUTTER_BUTTON_PRESS"
+              glib:nick="button-press"/>
+      <member name="button_release"
+              value="7"
+              c:identifier="CLUTTER_BUTTON_RELEASE"
+              glib:nick="button-release"/>
+      <member name="scroll"
+              value="8"
+              c:identifier="CLUTTER_SCROLL"
+              glib:nick="scroll"/>
+      <member name="stage_state"
+              value="9"
+              c:identifier="CLUTTER_STAGE_STATE"
+              glib:nick="stage-state"/>
+      <member name="destroy_notify"
+              value="10"
+              c:identifier="CLUTTER_DESTROY_NOTIFY"
+              glib:nick="destroy-notify"/>
+      <member name="client_message"
+              value="11"
+              c:identifier="CLUTTER_CLIENT_MESSAGE"
+              glib:nick="client-message"/>
+      <member name="delete"
+              value="12"
+              c:identifier="CLUTTER_DELETE"
+              glib:nick="delete"/>
+    </enumeration>
+    <constant name="Excel" value="269025116">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Execute" value="65378">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Explorer" value="269025117">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F" value="70">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F1" value="65470">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F10" value="65479">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F11" value="65480">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F12" value="65481">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F13" value="65482">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F14" value="65483">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F15" value="65484">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F16" value="65485">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F17" value="65486">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F18" value="65487">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F19" value="65488">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F2" value="65471">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F20" value="65489">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F21" value="65490">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F22" value="65491">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F23" value="65492">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F24" value="65493">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F25" value="65494">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F26" value="65495">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F27" value="65496">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F28" value="65497">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F29" value="65498">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F3" value="65472">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F30" value="65499">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F31" value="65500">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F32" value="65501">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F33" value="65502">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F34" value="65503">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F35" value="65504">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F4" value="65473">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F5" value="65474">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F6" value="65475">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F7" value="65476">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F8" value="65477">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="F9" value="65478">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="FFrancSign" value="16785571">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="FLAVOUR" value="glx">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="Fabovedot" value="16784926">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Farsi_0" value="16778992">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Farsi_1" value="16778993">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Farsi_2" value="16778994">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Farsi_3" value="16778995">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Farsi_4" value="16778996">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Farsi_5" value="16778997">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Farsi_6" value="16778998">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Farsi_7" value="16778999">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Farsi_8" value="16779000">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Farsi_9" value="16779001">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Farsi_yeh" value="16778956">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Favorites" value="269025072">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <bitfield name="FeatureFlags"
+              version="0.4"
+              glib:type-name="ClutterFeatureFlags"
+              glib:get-type="clutter_feature_flags_get_type"
+              c:type="ClutterFeatureFlags">
+      <doc xml:whitespace="preserve">Runtime flags indicating specific features available via Clutter window
+sysytem and graphics backend.</doc>
+      <member name="texture_npot"
+              value="4"
+              c:identifier="CLUTTER_FEATURE_TEXTURE_NPOT"
+              glib:nick="texture-npot"/>
+      <member name="sync_to_vblank"
+              value="8"
+              c:identifier="CLUTTER_FEATURE_SYNC_TO_VBLANK"
+              glib:nick="sync-to-vblank"/>
+      <member name="texture_yuv"
+              value="16"
+              c:identifier="CLUTTER_FEATURE_TEXTURE_YUV"
+              glib:nick="texture-yuv"/>
+      <member name="texture_read_pixels"
+              value="32"
+              c:identifier="CLUTTER_FEATURE_TEXTURE_READ_PIXELS"
+              glib:nick="texture-read-pixels"/>
+      <member name="stage_static"
+              value="64"
+              c:identifier="CLUTTER_FEATURE_STAGE_STATIC"
+              glib:nick="stage-static"/>
+      <member name="stage_user_resize"
+              value="128"
+              c:identifier="CLUTTER_FEATURE_STAGE_USER_RESIZE"
+              glib:nick="stage-user-resize"/>
+      <member name="stage_cursor"
+              value="256"
+              c:identifier="CLUTTER_FEATURE_STAGE_CURSOR"
+              glib:nick="stage-cursor"/>
+      <member name="shaders_glsl"
+              value="512"
+              c:identifier="CLUTTER_FEATURE_SHADERS_GLSL"
+              glib:nick="shaders-glsl"/>
+      <member name="offscreen"
+              value="1024"
+              c:identifier="CLUTTER_FEATURE_OFFSCREEN"
+              glib:nick="offscreen"/>
+      <member name="stage_multiple"
+              value="2048"
+              c:identifier="CLUTTER_FEATURE_STAGE_MULTIPLE"
+              glib:nick="stage-multiple"/>
+      <member name="swap_events"
+              value="4096"
+              c:identifier="CLUTTER_FEATURE_SWAP_EVENTS"
+              glib:nick="swap-events"/>
+    </bitfield>
+    <constant name="Finance" value="269025084">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Find" value="65384">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="First_Virtual_Screen" value="65232">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="FixedLayout"
+           c:symbol-prefix="fixed_layout"
+           c:type="ClutterFixedLayout"
+           version="1.2"
+           parent="LayoutManager"
+           glib:type-name="ClutterFixedLayout"
+           glib:get-type="clutter_fixed_layout_get_type"
+           glib:type-struct="FixedLayoutClass">
+      <doc xml:whitespace="preserve">The #ClutterFixedLayout structure contains only private data and
+it should be accessed using the provided API</doc>
+      <constructor name="new"
+                   c:identifier="clutter_fixed_layout_new"
+                   version="1.2">
+        <doc xml:whitespace="preserve">Creates a new #ClutterFixedLayout</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterFixedLayout</doc>
+          <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+        </return-value>
+      </constructor>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="LayoutManager" c:type="ClutterLayoutManager"/>
+      </field>
+    </class>
+    <record name="FixedLayoutClass"
+            c:type="ClutterFixedLayoutClass"
+            glib:is-gtype-struct-for="FixedLayout"
+            version="1.2">
+      <doc xml:whitespace="preserve">The #ClutterFixedLayoutClass structure contains only private data
+and it should be accessed using the provided API</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="LayoutManagerClass" c:type="ClutterLayoutManagerClass"/>
+      </field>
+    </record>
+    <class name="FlowLayout"
+           c:symbol-prefix="flow_layout"
+           c:type="ClutterFlowLayout"
+           version="1.2"
+           parent="LayoutManager"
+           glib:type-name="ClutterFlowLayout"
+           glib:get-type="clutter_flow_layout_get_type"
+           glib:type-struct="FlowLayoutClass">
+      <doc xml:whitespace="preserve">The #ClutterFlowLayout structure contains only private data
+and should be accessed using the provided API</doc>
+      <constructor name="new"
+                   c:identifier="clutter_flow_layout_new"
+                   version="1.2">
+        <doc xml:whitespace="preserve">Creates a new #ClutterFlowLayout with the given @orientation</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterFlowLayout</doc>
+          <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+        </return-value>
+        <parameters>
+          <parameter name="orientation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the orientation of the flow layout</doc>
+            <type name="FlowOrientation" c:type="ClutterFlowOrientation"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_column_spacing"
+              c:identifier="clutter_flow_layout_get_column_spacing"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the spacing between columns
+in pixels</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the spacing between columns of the #ClutterFlowLayout,</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_column_width"
+              c:identifier="clutter_flow_layout_get_column_width"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the minimum and maximum column widths</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min_width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the minimum column width, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="max_width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the maximum column width, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_homogeneous"
+              c:identifier="clutter_flow_layout_get_homogeneous"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves whether the @layout is homogeneous</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #ClutterFlowLayout is homogeneous</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_orientation"
+              c:identifier="clutter_flow_layout_get_orientation"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the orientation of the @layout</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the orientation of the #ClutterFlowLayout</doc>
+          <type name="FlowOrientation" c:type="ClutterFlowOrientation"/>
+        </return-value>
+      </method>
+      <method name="get_row_height"
+              c:identifier="clutter_flow_layout_get_row_height"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the minimum and maximum row heights</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min_height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the minimum row height, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="max_height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the maximum row height, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_row_spacing"
+              c:identifier="clutter_flow_layout_get_row_spacing"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the spacing between rows
+in pixels</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the spacing between rows of the #ClutterFlowLayout,</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="set_column_spacing"
+              c:identifier="clutter_flow_layout_set_column_spacing"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets the space between columns, in pixels</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spacing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the space between columns</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_column_width"
+              c:identifier="clutter_flow_layout_set_column_width"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets the minimum and maximum widths that a column can have</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min_width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">minimum width of a column</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="max_width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">maximum width of a column</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_homogeneous"
+              c:identifier="clutter_flow_layout_set_homogeneous"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets whether the @layout should allocate the same space for
+each child</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="homogeneous" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the layout should be homogeneous or not</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_orientation"
+              c:identifier="clutter_flow_layout_set_orientation"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets the orientation of the flow layout
+The orientation controls the direction used to allocate
+orientation also controls the direction of the overflowing</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="orientation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the orientation of the layout</doc>
+            <type name="FlowOrientation" c:type="ClutterFlowOrientation"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_row_height"
+              c:identifier="clutter_flow_layout_set_row_height"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets the minimum and maximum heights that a row can have</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min_height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the minimum height of a row</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="max_height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the maximum height of a row</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_row_spacing"
+              c:identifier="clutter_flow_layout_set_row_spacing"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets the spacing between rows, in pixels</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spacing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the space between rows</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="column-spacing"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The spacing between columns, in pixels; the value of this
+property is honoured by horizontal non-overflowing layouts
+and by vertical overflowing layouts</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="homogeneous"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether each child inside the #ClutterFlowLayout should receive
+the same allocation</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="max-column-width"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Maximum width for each column in the layout, in pixels. If
+set to -1 the width will be the maximum child width</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="max-row-height"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Maximum height for each row in the layout, in pixels. If
+set to -1 the width will be the maximum child height</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="min-column-width"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Minimum width for each column in the layout, in pixels</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="min-row-height"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Minimum height for each row in the layout, in pixels</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="orientation"
+                version="1.2"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The orientation of the #ClutterFlowLayout. The children
+of the layout will be layed out following the orientation.
+This property also controls the overflowing directions</doc>
+        <type name="FlowOrientation"/>
+      </property>
+      <property name="row-spacing"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The spacing between rows, in pixels; the value of this
+property is honoured by vertical non-overflowing layouts and
+by horizontal overflowing layouts</doc>
+        <type name="gfloat"/>
+      </property>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="LayoutManager" c:type="ClutterLayoutManager"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="FlowLayoutPrivate" c:type="ClutterFlowLayoutPrivate*"/>
+      </field>
+    </class>
+    <record name="FlowLayoutClass"
+            c:type="ClutterFlowLayoutClass"
+            glib:is-gtype-struct-for="FlowLayout"
+            version="1.2">
+      <doc xml:whitespace="preserve">The #ClutterFlowLayoutClass structure contains only private data
+and should be accessed using the provided API</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="LayoutManagerClass" c:type="ClutterLayoutManagerClass"/>
+      </field>
+    </record>
+    <record name="FlowLayoutPrivate"
+            c:type="ClutterFlowLayoutPrivate"
+            disguised="1">
+    </record>
+    <enumeration name="FlowOrientation"
+                 version="1.2"
+                 glib:type-name="ClutterFlowOrientation"
+                 glib:get-type="clutter_flow_orientation_get_type"
+                 c:type="ClutterFlowOrientation">
+      <doc xml:whitespace="preserve">The direction of the arrangement of the children inside
+a #ClutterFlowLayout</doc>
+      <member name="horizontal"
+              value="0"
+              c:identifier="CLUTTER_FLOW_HORIZONTAL"
+              glib:nick="horizontal"/>
+      <member name="vertical"
+              value="1"
+              c:identifier="CLUTTER_FLOW_VERTICAL"
+              glib:nick="vertical"/>
+    </enumeration>
+    <record name="Fog"
+            c:type="ClutterFog"
+            version="0.6"
+            glib:type-name="ClutterFog"
+            glib:get-type="clutter_fog_get_type"
+            c:symbol-prefix="fog">
+      <doc xml:whitespace="preserve">Fog settings used to create the depth cueing effect.</doc>
+      <field name="z_near" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="z_far" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+    </record>
+    <bitfield name="FontFlags"
+              version="1.0"
+              glib:type-name="ClutterFontFlags"
+              glib:get-type="clutter_font_flags_get_type"
+              c:type="ClutterFontFlags">
+      <doc xml:whitespace="preserve">Runtime flags to change the font quality. To be used with
+clutter_set_font_flags().</doc>
+      <member name="mipmapping"
+              value="1"
+              c:identifier="CLUTTER_FONT_MIPMAPPING"
+              glib:nick="mipmapping"/>
+      <member name="hinting"
+              value="2"
+              c:identifier="CLUTTER_FONT_HINTING"
+              glib:nick="hinting"/>
+    </bitfield>
+    <constant name="Forward" value="269025063">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="FrameBack" value="269025181">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="FrameForward" value="269025182">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="G" value="71">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Gabovedot" value="725">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Game" value="269025118">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Gbreve" value="683">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Gcaron" value="16777702">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Gcedilla" value="939">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Gcircumflex" value="728">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="Geometry"
+            c:type="ClutterGeometry"
+            glib:type-name="ClutterGeometry"
+            glib:get-type="clutter_geometry_get_type"
+            c:symbol-prefix="geometry">
+      <doc xml:whitespace="preserve">The rectangle containing an actor's bounding box, measured in pixels.</doc>
+      <field name="x" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="width" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="height" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <method name="intersects"
+              c:identifier="clutter_geometry_intersects"
+              version="1.4">
+        <doc xml:whitespace="preserve">Determines if @geometry0 and geometry1 intersect returning %TRUE if
+they do else %FALSE.
+%FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE of @geometry0 and geometry1 intersect else</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="geometry1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The second geometry to test</doc>
+            <type name="Geometry" c:type="ClutterGeometry*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="union" c:identifier="clutter_geometry_union" version="1.4">
+        <doc xml:whitespace="preserve">Find the union of two rectangles represented as #ClutterGeometry.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="geometry_b" transfer-ownership="none">
+            <doc xml:whitespace="preserve">another #ClutterGeometry</doc>
+            <type name="Geometry" c:type="ClutterGeometry*"/>
+          </parameter>
+          <parameter name="result"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the result</doc>
+            <type name="Geometry" c:type="ClutterGeometry*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <constant name="Georgian_an" value="16781520">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_ban" value="16781521">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_can" value="16781546">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_char" value="16781549">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_chin" value="16781545">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_cil" value="16781548">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_don" value="16781523">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_en" value="16781524">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_fi" value="16781558">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_gan" value="16781522">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_ghan" value="16781542">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_hae" value="16781552">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_har" value="16781556">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_he" value="16781553">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_hie" value="16781554">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_hoe" value="16781557">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_in" value="16781528">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_jhan" value="16781551">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_jil" value="16781547">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_kan" value="16781529">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_khar" value="16781541">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_las" value="16781530">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_man" value="16781531">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_nar" value="16781532">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_on" value="16781533">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_par" value="16781534">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_phar" value="16781540">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_qar" value="16781543">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_rae" value="16781536">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_san" value="16781537">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_shin" value="16781544">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_tan" value="16781527">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_tar" value="16781538">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_un" value="16781539">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_vin" value="16781525">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_we" value="16781555">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_xan" value="16781550">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_zen" value="16781526">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Georgian_zhar" value="16781535">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Go" value="269025119">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <enumeration name="Gravity"
+                 version="0.2"
+                 glib:type-name="ClutterGravity"
+                 glib:get-type="clutter_gravity_get_type"
+                 c:type="ClutterGravity">
+      <doc xml:whitespace="preserve">Gravity of the scaling operations. When a gravity different than
+%CLUTTER_GRAVITY_NONE is used, an actor is scaled keeping the position
+of the specified portion at the same coordinates.</doc>
+      <member name="none"
+              value="0"
+              c:identifier="CLUTTER_GRAVITY_NONE"
+              glib:nick="none"/>
+      <member name="north"
+              value="1"
+              c:identifier="CLUTTER_GRAVITY_NORTH"
+              glib:nick="north"/>
+      <member name="north_east"
+              value="2"
+              c:identifier="CLUTTER_GRAVITY_NORTH_EAST"
+              glib:nick="north-east"/>
+      <member name="east"
+              value="3"
+              c:identifier="CLUTTER_GRAVITY_EAST"
+              glib:nick="east"/>
+      <member name="south_east"
+              value="4"
+              c:identifier="CLUTTER_GRAVITY_SOUTH_EAST"
+              glib:nick="south-east"/>
+      <member name="south"
+              value="5"
+              c:identifier="CLUTTER_GRAVITY_SOUTH"
+              glib:nick="south"/>
+      <member name="south_west"
+              value="6"
+              c:identifier="CLUTTER_GRAVITY_SOUTH_WEST"
+              glib:nick="south-west"/>
+      <member name="west"
+              value="7"
+              c:identifier="CLUTTER_GRAVITY_WEST"
+              glib:nick="west"/>
+      <member name="north_west"
+              value="8"
+              c:identifier="CLUTTER_GRAVITY_NORTH_WEST"
+              glib:nick="north-west"/>
+      <member name="center"
+              value="9"
+              c:identifier="CLUTTER_GRAVITY_CENTER"
+              glib:nick="center"/>
+    </enumeration>
+    <constant name="Greek_ALPHA" value="1985">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_ALPHAaccent" value="1953">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_BETA" value="1986">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_CHI" value="2007">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_DELTA" value="1988">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_EPSILON" value="1989">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_EPSILONaccent" value="1954">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_ETA" value="1991">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_ETAaccent" value="1955">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_GAMMA" value="1987">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_IOTA" value="1993">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_IOTAaccent" value="1956">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_IOTAdiaeresis" value="1957">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_IOTAdieresis" value="1957">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_KAPPA" value="1994">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_LAMBDA" value="1995">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_LAMDA" value="1995">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_MU" value="1996">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_NU" value="1997">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_OMEGA" value="2009">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_OMEGAaccent" value="1963">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_OMICRON" value="1999">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_OMICRONaccent" value="1959">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_PHI" value="2006">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_PI" value="2000">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_PSI" value="2008">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_RHO" value="2001">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_SIGMA" value="2002">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_TAU" value="2004">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_THETA" value="1992">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_UPSILON" value="2005">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_UPSILONaccent" value="1960">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_UPSILONdieresis" value="1961">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_XI" value="1998">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_ZETA" value="1990">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_accentdieresis" value="1966">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_alpha" value="2017">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_alphaaccent" value="1969">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_beta" value="2018">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_chi" value="2039">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_delta" value="2020">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_epsilon" value="2021">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_epsilonaccent" value="1970">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_eta" value="2023">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_etaaccent" value="1971">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_finalsmallsigma" value="2035">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_gamma" value="2019">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_horizbar" value="1967">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_iota" value="2025">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_iotaaccent" value="1972">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_iotaaccentdieresis" value="1974">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_iotadieresis" value="1973">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_kappa" value="2026">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_lambda" value="2027">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_lamda" value="2027">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_mu" value="2028">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_nu" value="2029">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_omega" value="2041">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_omegaaccent" value="1979">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_omicron" value="2031">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_omicronaccent" value="1975">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_phi" value="2038">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_pi" value="2032">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_psi" value="2040">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_rho" value="2033">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_sigma" value="2034">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_switch" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_tau" value="2036">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_theta" value="2024">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_upsilon" value="2037">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_upsilonaccent" value="1976">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_upsilonaccentdieresis" value="1978">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_upsilondieresis" value="1977">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_xi" value="2030">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Greek_zeta" value="2022">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Green" value="269025188">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Group"
+           c:symbol-prefix="group"
+           c:type="ClutterGroup"
+           version="0.1"
+           parent="Actor"
+           glib:type-name="ClutterGroup"
+           glib:get-type="clutter_group_get_type"
+           glib:type-struct="GroupClass">
+      <doc xml:whitespace="preserve">The #ClutterGroup structure contains only private data
+and should be accessed using the provided API</doc>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Animatable"/>
+      <implements name="Container"/>
+      <implements name="Scriptable"/>
+      <constructor name="new" c:identifier="clutter_group_new">
+        <doc xml:whitespace="preserve">Create a new  #ClutterGroup.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterGroup actor</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </constructor>
+      <method name="get_n_children"
+              c:identifier="clutter_group_get_n_children"
+              version="0.2">
+        <doc xml:whitespace="preserve">Gets the number of actors held in the group.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of child actors held in the group.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_nth_child"
+              c:identifier="clutter_group_get_nth_child"
+              version="0.2">
+        <doc xml:whitespace="preserve">Gets a groups child held at @index_ in stack.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A Clutter actor, or %NULL if</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position of the requested actor.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_all" c:identifier="clutter_group_remove_all">
+        <doc xml:whitespace="preserve">Removes all children actors from the #ClutterGroup.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="Actor" c:type="ClutterActor"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="GroupPrivate" c:type="ClutterGroupPrivate*"/>
+      </field>
+    </class>
+    <record name="GroupClass"
+            c:type="ClutterGroupClass"
+            glib:is-gtype-struct-for="Group"
+            version="0.1">
+      <doc xml:whitespace="preserve">The #ClutterGroupClass structure contains only private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="ActorClass" c:type="ClutterActorClass"/>
+      </field>
+      <field name="_clutter_reserved1" introspectable="0">
+        <callback name="_clutter_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved2" introspectable="0">
+        <callback name="_clutter_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved3" introspectable="0">
+        <callback name="_clutter_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved4" introspectable="0">
+        <callback name="_clutter_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved5" introspectable="0">
+        <callback name="_clutter_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved6" introspectable="0">
+        <callback name="_clutter_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="GroupPrivate" c:type="ClutterGroupPrivate" disguised="1">
+    </record>
+    <constant name="H" value="72">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul" value="65329">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_A" value="3775">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_AE" value="3776">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_AraeA" value="3830">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_AraeAE" value="3831">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Banja" value="65337">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Cieuc" value="3770">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Codeinput" value="65335">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Dikeud" value="3751">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_E" value="3780">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_EO" value="3779">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_EU" value="3793">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_End" value="65331">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Hanja" value="65332">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Hieuh" value="3774">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_I" value="3795">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Ieung" value="3767">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_Cieuc" value="3818">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_Dikeud" value="3802">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_Hieuh" value="3822">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_Ieung" value="3816">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_Jieuj" value="3817">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_Khieuq" value="3819">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_Kiyeog" value="3796">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_KiyeogSios" value="3798">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_KkogjiDalrinIeung" value="3833">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_Mieum" value="3811">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_Nieun" value="3799">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_NieunHieuh" value="3801">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_NieunJieuj" value="3800">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_PanSios" value="3832">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_Phieuf" value="3821">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_Pieub" value="3812">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_PieubSios" value="3813">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_Rieul" value="3803">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_RieulHieuh" value="3810">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_RieulKiyeog" value="3804">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_RieulMieum" value="3805">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_RieulPhieuf" value="3809">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_RieulPieub" value="3806">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_RieulSios" value="3807">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_RieulTieut" value="3808">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_Sios" value="3814">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_SsangKiyeog" value="3797">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_SsangSios" value="3815">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_Tieut" value="3820">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_J_YeorinHieuh" value="3834">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Jamo" value="65333">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Jeonja" value="65336">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Jieuj" value="3768">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Khieuq" value="3771">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Kiyeog" value="3745">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_KiyeogSios" value="3747">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_KkogjiDalrinIeung" value="3827">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Mieum" value="3761">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_MultipleCandidate" value="65341">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Nieun" value="3748">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_NieunHieuh" value="3750">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_NieunJieuj" value="3749">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_O" value="3783">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_OE" value="3786">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_PanSios" value="3826">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Phieuf" value="3773">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Pieub" value="3762">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_PieubSios" value="3764">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_PostHanja" value="65339">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_PreHanja" value="65338">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_PreviousCandidate" value="65342">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Rieul" value="3753">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_RieulHieuh" value="3760">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_RieulKiyeog" value="3754">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_RieulMieum" value="3755">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_RieulPhieuf" value="3759">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_RieulPieub" value="3756">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_RieulSios" value="3757">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_RieulTieut" value="3758">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_RieulYeorinHieuh" value="3823">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Romaja" value="65334">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_SingleCandidate" value="65340">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Sios" value="3765">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Special" value="65343">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_SsangDikeud" value="3752">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_SsangJieuj" value="3769">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_SsangKiyeog" value="3746">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_SsangPieub" value="3763">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_SsangSios" value="3766">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Start" value="65330">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_SunkyeongeumMieum" value="3824">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_SunkyeongeumPhieuf" value="3828">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_SunkyeongeumPieub" value="3825">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_Tieut" value="3772">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_U" value="3788">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_WA" value="3784">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_WAE" value="3785">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_WE" value="3790">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_WEO" value="3789">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_WI" value="3791">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_YA" value="3777">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_YAE" value="3778">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_YE" value="3782">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_YEO" value="3781">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_YI" value="3794">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_YO" value="3787">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_YU" value="3792">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_YeorinHieuh" value="3829">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hangul_switch" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hankaku" value="65321">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hcircumflex" value="678">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hebrew_switch" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Help" value="65386">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Henkan" value="65315">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Henkan_Mode" value="65315">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hibernate" value="269025192">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hiragana" value="65317">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hiragana_Katakana" value="65319">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="History" value="269025079">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Home" value="65360">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="HomePage" value="269025048">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="HotLinks" value="269025082">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hstroke" value="673">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hyper_L" value="65517">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Hyper_R" value="65518">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="I" value="73">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Center_Object" value="65075">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Continuous_Underline" value="65072">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Discontinuous_Underline" value="65073">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Emphasize" value="65074">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Enter" value="65076">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Fast_Cursor_Down" value="65071">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Fast_Cursor_Left" value="65068">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Fast_Cursor_Right" value="65069">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Fast_Cursor_Up" value="65070">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_First_Group" value="65036">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_First_Group_Lock" value="65037">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Group_Latch" value="65030">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Group_Lock" value="65031">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Group_Shift" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Last_Group" value="65038">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Last_Group_Lock" value="65039">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Left_Tab" value="65056">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Level2_Latch" value="65026">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Level3_Latch" value="65028">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Level3_Lock" value="65029">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Level3_Shift" value="65027">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Level5_Latch" value="65042">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Level5_Lock" value="65043">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Level5_Shift" value="65041">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Lock" value="65025">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Move_Line_Down" value="65058">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Move_Line_Up" value="65057">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Next_Group" value="65032">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Next_Group_Lock" value="65033">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Partial_Line_Down" value="65060">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Partial_Line_Up" value="65059">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Partial_Space_Left" value="65061">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Partial_Space_Right" value="65062">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Prev_Group" value="65034">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Prev_Group_Lock" value="65035">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Release_Both_Margins" value="65067">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Release_Margin_Left" value="65065">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Release_Margin_Right" value="65066">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Set_Margin_Left" value="65063">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ISO_Set_Margin_Right" value="65064">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Iabovedot" value="681">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Iacute" value="205">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ibelowdot" value="16785098">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ibreve" value="16777516">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Icircumflex" value="206">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Idiaeresis" value="207">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Igrave" value="204">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ihook" value="16785096">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Imacron" value="975">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <enumeration name="InitError"
+                 version="0.2"
+                 glib:type-name="ClutterInitError"
+                 glib:get-type="clutter_init_error_get_type"
+                 c:type="ClutterInitError"
+                 glib:error-quark="clutter_init_error_quark">
+      <doc xml:whitespace="preserve">Error conditions returned by clutter_init() and clutter_init_with_args().</doc>
+      <member name="success"
+              value="1"
+              c:identifier="CLUTTER_INIT_SUCCESS"
+              glib:nick="success"/>
+      <member name="error_unknown"
+              value="0"
+              c:identifier="CLUTTER_INIT_ERROR_UNKNOWN"
+              glib:nick="error-unknown"/>
+      <member name="error_threads"
+              value="-1"
+              c:identifier="CLUTTER_INIT_ERROR_THREADS"
+              glib:nick="error-threads"/>
+      <member name="error_backend"
+              value="-2"
+              c:identifier="CLUTTER_INIT_ERROR_BACKEND"
+              glib:nick="error-backend"/>
+      <member name="error_internal"
+              value="-3"
+              c:identifier="CLUTTER_INIT_ERROR_INTERNAL"
+              glib:nick="error-internal"/>
+    </enumeration>
+    <enumeration name="InputAxis"
+                 version="1.6"
+                 glib:type-name="ClutterInputAxis"
+                 glib:get-type="clutter_input_axis_get_type"
+                 c:type="ClutterInputAxis">
+      <doc xml:whitespace="preserve">The type of axes Clutter recognizes on a #ClutterInputDevice</doc>
+      <member name="ignore"
+              value="0"
+              c:identifier="CLUTTER_INPUT_AXIS_IGNORE"
+              glib:nick="ignore"/>
+      <member name="x"
+              value="1"
+              c:identifier="CLUTTER_INPUT_AXIS_X"
+              glib:nick="x"/>
+      <member name="y"
+              value="2"
+              c:identifier="CLUTTER_INPUT_AXIS_Y"
+              glib:nick="y"/>
+      <member name="pressure"
+              value="3"
+              c:identifier="CLUTTER_INPUT_AXIS_PRESSURE"
+              glib:nick="pressure"/>
+      <member name="xtilt"
+              value="4"
+              c:identifier="CLUTTER_INPUT_AXIS_XTILT"
+              glib:nick="xtilt"/>
+      <member name="ytilt"
+              value="5"
+              c:identifier="CLUTTER_INPUT_AXIS_YTILT"
+              glib:nick="ytilt"/>
+      <member name="wheel"
+              value="6"
+              c:identifier="CLUTTER_INPUT_AXIS_WHEEL"
+              glib:nick="wheel"/>
+    </enumeration>
+    <class name="InputDevice"
+           c:symbol-prefix="input_device"
+           c:type="ClutterInputDevice"
+           parent="GObject.Object"
+           glib:type-name="ClutterInputDevice"
+           glib:get-type="clutter_input_device_get_type"
+           glib:type-struct="InputDeviceClass">
+      <doc xml:whitespace="preserve">Generic representation of an input device. The actual contents of this
+structure depend on the backend used.</doc>
+      <method name="get_associated_device"
+              c:identifier="clutter_input_device_get_associated_device"
+              version="1.6">
+        <doc xml:whitespace="preserve">Retrieves a pointer to the #ClutterInputDevice that has been
+associated to @device.
+If the #ClutterInputDevice:device-mode property of @device is
+set to %CLUTTER_INPUT_MODE_MASTER, this function will return
+%NULL.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterInputDevice, or %NULL</doc>
+          <type name="InputDevice" c:type="ClutterInputDevice*"/>
+        </return-value>
+      </method>
+      <method name="get_axis"
+              c:identifier="clutter_input_device_get_axis"
+              version="1.6">
+        <doc xml:whitespace="preserve">Retrieves the type of axis on @device at the given index.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the axis type</doc>
+          <type name="InputAxis" c:type="ClutterInputAxis"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of the axis</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_axis_value"
+              c:identifier="clutter_input_device_get_axis_value"
+              version="1.6">
+        <doc xml:whitespace="preserve">Extracts the value of the given @axis of a #ClutterInputDevice from
+an array of axis values.
+An example of typical usage for this function is:
+|[
+ClutterInputDevice *device = clutter_event_get_device (event);
+gdouble *axes = clutter_event_get_axes (event, NULL);
+gdouble pressure_value = 0;
+clutter_input_device_get_axis_value (device, axes,
+CLUTTER_INPUT_AXIS_PRESSURE,
+&amp;amp;pressure_value);
+]|</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value was set, and %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="axes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of axes values, typically coming from clutter_event_get_axes()</doc>
+            <array c:type="gdouble*">
+              <type name="gdouble" c:type="gdouble"/>
+            </array>
+          </parameter>
+          <parameter name="axis" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the axis to extract</doc>
+            <type name="InputAxis" c:type="ClutterInputAxis"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the axis value</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_device_coords"
+              c:identifier="clutter_input_device_get_device_coords"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the latest coordinates of the pointer of @device</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the X coordinate</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the Y coordinate</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_device_id"
+              c:identifier="clutter_input_device_get_device_id"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the unique identifier of @device</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the identifier of the device</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_device_mode"
+              c:identifier="clutter_input_device_get_device_mode"
+              version="1.6">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterInputMode of @device.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the device mode</doc>
+          <type name="InputMode" c:type="ClutterInputMode"/>
+        </return-value>
+      </method>
+      <method name="get_device_name"
+              c:identifier="clutter_input_device_get_device_name"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the name of the @device
+is owned by the #ClutterInputDevice and should never be modified
+or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the device, or %NULL. The returned string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_device_type"
+              c:identifier="clutter_input_device_get_device_type"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the type of @device</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type of the device</doc>
+          <type name="InputDeviceType" c:type="ClutterInputDeviceType"/>
+        </return-value>
+      </method>
+      <method name="get_enabled"
+              c:identifier="clutter_input_device_get_enabled"
+              version="1.6">
+        <doc xml:whitespace="preserve">Retrieves whether @device is enabled.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the device is enabled</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_has_cursor"
+              c:identifier="clutter_input_device_get_has_cursor"
+              version="1.6">
+        <doc xml:whitespace="preserve">Retrieves whether @device has a pointer that follows the
+device motion.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the device has a cursor</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_key"
+              c:identifier="clutter_input_device_get_key"
+              version="1.6">
+        <doc xml:whitespace="preserve">Retrieves the key set using clutter_input_device_set_key()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if a key was set at the given index</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of the key</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="keyval"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the keyval at @index_</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+          <parameter name="modifiers"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the modifiers at @index_</doc>
+            <type name="ModifierType" c:type="ClutterModifierType*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_n_axes"
+              c:identifier="clutter_input_device_get_n_axes"
+              version="1.6">
+        <doc xml:whitespace="preserve">Retrieves the number of axes available on @device.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of axes on the device</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_n_keys"
+              c:identifier="clutter_input_device_get_n_keys"
+              version="1.6">
+        <doc xml:whitespace="preserve">Retrieves the number of keys registered for @device.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of registered keys</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_pointer_actor"
+              c:identifier="clutter_input_device_get_pointer_actor"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterActor underneath the pointer of @device</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to the #ClutterActor or %NULL</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="get_pointer_stage"
+              c:identifier="clutter_input_device_get_pointer_stage"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterStage underneath the pointer of @device</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to the #ClutterStage or %NULL</doc>
+          <type name="Stage" c:type="ClutterStage*"/>
+        </return-value>
+      </method>
+      <method name="get_slave_devices"
+              c:identifier="clutter_input_device_get_slave_devices"
+              version="1.6">
+        <doc xml:whitespace="preserve">Retrieves the slave devices attached to @device.
+list of #ClutterInputDevice, or %NULL. The contents of the list are
+owned by the device. Use g_list_free() when done</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="InputDevice"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="set_enabled"
+              c:identifier="clutter_input_device_set_enabled"
+              version="1.6">
+        <doc xml:whitespace="preserve">Enables or disables a #ClutterInputDevice.
+Only devices with a #ClutterInputDevice:device-mode property set
+to %CLUTTER_INPUT_MODE_SLAVE or %CLUTTER_INPUT_MODE_FLOATING can
+be disabled.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="enabled" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to enable the @device</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_key"
+              c:identifier="clutter_input_device_set_key"
+              version="1.6">
+        <doc xml:whitespace="preserve">Sets the keyval and modifiers at the given @index_ for @device.
+Clutter will use the keyval and modifiers set when filling out
+an event coming from the same input device.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of the key</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="keyval" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the keyval</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a bitmask of modifiers</doc>
+            <type name="ModifierType" c:type="ClutterModifierType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="update_from_event"
+              c:identifier="clutter_input_device_update_from_event"
+              version="1.2">
+        <doc xml:whitespace="preserve">Forcibly updates the state of the @device using a #ClutterEvent
+for integration with embedding toolkits, like clutter-gtk
+Embedding toolkits that disable the event collection inside Clutter
+need to use this function to update the state of input devices depending
+on a #ClutterEvent that they are going to submit to the event handling code
+in Clutter though clutter_do_event(). Since the input devices hold the state
+that is going to be used to fill in fields like the #ClutterButtonEvent
+click count, or to emit synthesized events like %CLUTTER_ENTER and
+%CLUTTER_LEAVE, it is necessary for embedding toolkits to also be
+responsible of updating the input device state.
+For instance, this might be the code to translate an embedding toolkit
+native motion notification into a Clutter #ClutterMotionEvent and ask
+Clutter to process it:
+|[
+ClutterEvent c_event;
+translate_native_event_to_clutter (native_event, &amp;amp;c_event);
+clutter_do_event (&amp;amp;c_event);
+]|
+Before letting clutter_do_event() process the event, it is necessary to call
+clutter_input_device_update_from_event():
+|[
+ClutterEvent c_event;
+ClutterDeviceManager *manager;
+ClutterInputDevice *device;
+translate_native_event_to_clutter (native_event, &amp;amp;c_event);
+/&amp;ast; get the device manager &amp;ast;/
+manager = clutter_device_manager_get_default ();
+/&amp;ast; use the default Core Pointer that Clutter
+&amp;ast; backends register by default
+&amp;ast;/
+device = clutter_device_manager_get_core_device (manager, %CLUTTER_POINTER_DEVICE);
+/&amp;ast; update the state of the input device &amp;ast;/
+clutter_input_device_update_from_event (device, &amp;amp;c_event, FALSE);
+clutter_do_event (&amp;amp;c_event);
+]|
+The @update_stage boolean argument should be used when the input device
+enters and leaves a #ClutterStage; it will use the #ClutterStage field
+of the passed @event to update the stage associated to the input device.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterEvent</doc>
+            <type name="Event" c:type="ClutterEvent*"/>
+          </parameter>
+          <parameter name="update_stage" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to update the #ClutterStage of the @device using the stage of the event</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="backend"
+                version="1.6"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #ClutterBackend that created the device.</doc>
+        <type name="Backend"/>
+      </property>
+      <property name="device-manager"
+                version="1.6"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #ClutterDeviceManager instance which owns the device</doc>
+        <type name="DeviceManager"/>
+      </property>
+      <property name="device-mode"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="InputMode"/>
+      </property>
+      <property name="device-type"
+                version="1.2"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The type of the device</doc>
+        <type name="InputDeviceType"/>
+      </property>
+      <property name="enabled"
+                version="1.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the device is enabled.
+A device with the #ClutterInputDevice:device-mode property set
+to %CLUTTER_INPUT_MODE_MASTER cannot be disabled.
+A device must be enabled in order to receive events from it.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="has-cursor"
+                version="1.6"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the device has an on screen cursor following its movement.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="id"
+                version="1.2"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The unique identifier of the device</doc>
+        <type name="gint"/>
+      </property>
+      <property name="n-axes" version="1.6" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The number of axes of the device.</doc>
+        <type name="guint"/>
+      </property>
+      <property name="name"
+                version="1.2"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The name of the device</doc>
+        <type name="utf8"/>
+      </property>
+    </class>
+    <record name="InputDeviceClass"
+            c:type="ClutterInputDeviceClass"
+            disguised="1"
+            glib:is-gtype-struct-for="InputDevice">
+    </record>
+    <enumeration name="InputDeviceType"
+                 version="1.0"
+                 glib:type-name="ClutterInputDeviceType"
+                 glib:get-type="clutter_input_device_type_get_type"
+                 c:type="ClutterInputDeviceType">
+      <doc xml:whitespace="preserve">The types of input devices available.
+The #ClutterInputDeviceType enumeration can be extended at later
+date; not every platform supports every input device type.</doc>
+      <member name="pointer_device"
+              value="0"
+              c:identifier="CLUTTER_POINTER_DEVICE"
+              glib:nick="pointer-device"/>
+      <member name="keyboard_device"
+              value="1"
+              c:identifier="CLUTTER_KEYBOARD_DEVICE"
+              glib:nick="keyboard-device"/>
+      <member name="extension_device"
+              value="2"
+              c:identifier="CLUTTER_EXTENSION_DEVICE"
+              glib:nick="extension-device"/>
+      <member name="joystick_device"
+              value="3"
+              c:identifier="CLUTTER_JOYSTICK_DEVICE"
+              glib:nick="joystick-device"/>
+      <member name="tablet_device"
+              value="4"
+              c:identifier="CLUTTER_TABLET_DEVICE"
+              glib:nick="tablet-device"/>
+      <member name="touchpad_device"
+              value="5"
+              c:identifier="CLUTTER_TOUCHPAD_DEVICE"
+              glib:nick="touchpad-device"/>
+      <member name="touchscreen_device"
+              value="6"
+              c:identifier="CLUTTER_TOUCHSCREEN_DEVICE"
+              glib:nick="touchscreen-device"/>
+      <member name="pen_device"
+              value="7"
+              c:identifier="CLUTTER_PEN_DEVICE"
+              glib:nick="pen-device"/>
+      <member name="eraser_device"
+              value="8"
+              c:identifier="CLUTTER_ERASER_DEVICE"
+              glib:nick="eraser-device"/>
+      <member name="cursor_device"
+              value="9"
+              c:identifier="CLUTTER_CURSOR_DEVICE"
+              glib:nick="cursor-device"/>
+      <member name="n_device_types"
+              value="10"
+              c:identifier="CLUTTER_N_DEVICE_TYPES"
+              glib:nick="n-device-types"/>
+    </enumeration>
+    <enumeration name="InputMode"
+                 version="1.6"
+                 glib:type-name="ClutterInputMode"
+                 glib:get-type="clutter_input_mode_get_type"
+                 c:type="ClutterInputMode">
+      <doc xml:whitespace="preserve">The mode for input devices available.</doc>
+      <member name="master"
+              value="0"
+              c:identifier="CLUTTER_INPUT_MODE_MASTER"
+              glib:nick="master"/>
+      <member name="slave"
+              value="1"
+              c:identifier="CLUTTER_INPUT_MODE_SLAVE"
+              glib:nick="slave"/>
+      <member name="floating"
+              value="2"
+              c:identifier="CLUTTER_INPUT_MODE_FLOATING"
+              glib:nick="floating"/>
+    </enumeration>
+    <constant name="Insert" value="65379">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <enumeration name="Interpolation"
+                 version="1.2"
+                 glib:type-name="ClutterInterpolation"
+                 glib:get-type="clutter_interpolation_get_type"
+                 c:type="ClutterInterpolation">
+      <doc xml:whitespace="preserve">The mode of interpolation between key frames</doc>
+      <member name="linear"
+              value="0"
+              c:identifier="CLUTTER_INTERPOLATION_LINEAR"
+              glib:nick="linear"/>
+      <member name="cubic"
+              value="1"
+              c:identifier="CLUTTER_INTERPOLATION_CUBIC"
+              glib:nick="cubic"/>
+    </enumeration>
+    <class name="Interval"
+           c:symbol-prefix="interval"
+           c:type="ClutterInterval"
+           version="1.0"
+           parent="GObject.InitiallyUnowned"
+           glib:type-name="ClutterInterval"
+           glib:get-type="clutter_interval_get_type"
+           glib:type-struct="IntervalClass">
+      <doc xml:whitespace="preserve">The #ClutterInterval structure contains only private data and should
+be accessed using the provided functions.</doc>
+      <constructor name="new"
+                   c:identifier="clutter_interval_new"
+                   version="1.0"
+                   introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new #ClutterInterval holding values of type @gtype.
+This function avoids using a #GValue for the initial and final values
+of the interval:
+|[
+interval = clutter_interval_new (G_TYPE_FLOAT, 0.0, 1.0);
+interval = clutter_interval_new (G_TYPE_BOOLEAN, FALSE, TRUE);
+interval = clutter_interval_new (G_TYPE_INT, 0, 360);
+]|</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterInterval</doc>
+          <type name="Interval" c:type="ClutterInterval*"/>
+        </return-value>
+        <parameters>
+          <parameter name="gtype" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type of the values in the interval</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_values"
+                   c:identifier="clutter_interval_new_with_values"
+                   version="1.0">
+        <doc xml:whitespace="preserve">Creates a new #ClutterInterval of type @gtype, between @initial
+and @final.
+This function is useful for language bindings.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterInterval</doc>
+          <type name="Interval" c:type="ClutterInterval*"/>
+        </return-value>
+        <parameters>
+          <parameter name="gtype" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type of the values in the interval</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="initial" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue holding the initial value of the interval</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="final" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue holding the final value of the interval</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="register_progress_func"
+                c:identifier="clutter_interval_register_progress_func"
+                version="1.0"
+                introspectable="0">
+        <doc xml:whitespace="preserve">Sets the progress function for a given @value_type, like:
+|[
+clutter_interval_register_progress_func (MY_TYPE_FOO,
+my_foo_progress);
+]|
+Whenever a #ClutterInterval instance using the default
+#ClutterInterval::compute_value implementation is set as an
+interval between two #GValue of type @value_type, it will call
+for instance:
+|[
+static gboolean
+my_int_progress (const GValue *a,
+const GValue *b,
+gdouble       progress,
+GValue       *retval)
+{
+gint ia = g_value_get_int (a);
+gint ib = g_value_get_int (b);
+gint res = factor * (ib - ia) + ia;
+g_value_set_int (retval, res);
+return TRUE;
+}
+clutter_interval_register_progress_func (G_TYPE_INT, my_int_progress);
+]|
+To unset a previously set progress function of a #GType, pass %NULL
+for @func.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GType</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="func" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterProgressFunc, or %NULL to unset a previously set progress function</doc>
+            <type name="ProgressFunc" c:type="ClutterProgressFunc"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="compute_value"
+                      invoker="compute_value"
+                      version="1.0">
+        <doc xml:whitespace="preserve">Computes the value between the @interval boundaries given the
+progress @factor and copies it into @value.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the operation was successful</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="factor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the progress factor, between 0 and 1</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for an initialized #GValue</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="validate" invoker="validate" version="1.0">
+        <doc xml:whitespace="preserve">Validates the initial and final values of @interval against
+a #GParamSpec.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #ClutterInterval is valid, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GParamSpec</doc>
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="clone" c:identifier="clutter_interval_clone" version="1.0">
+        <doc xml:whitespace="preserve">Creates a copy of @interval.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #ClutterInterval</doc>
+          <type name="Interval" c:type="ClutterInterval*"/>
+        </return-value>
+      </method>
+      <method name="compute"
+              c:identifier="clutter_interval_compute"
+              version="1.4">
+        <doc xml:whitespace="preserve">Computes the value between the @interval boundaries given the
+progress @factor
+Unlike clutter_interval_compute_value(), this function will
+return a const pointer to the computed value
+You should use this function if you immediately pass the computed
+value to another function that makes a copy of it, like
+g_object_set_property()
+or %NULL if the computation was not successfull</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to the computed value,</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="factor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the progress factor, between 0 and 1</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="compute_value"
+              c:identifier="clutter_interval_compute_value"
+              version="1.0">
+        <doc xml:whitespace="preserve">Computes the value between the @interval boundaries given the
+progress @factor and copies it into @value.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the operation was successful</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="factor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the progress factor, between 0 and 1</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for an initialized #GValue</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_final_value"
+              c:identifier="clutter_interval_get_final_value"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the final value of @interval and copies
+it into @value.
+The passed #GValue must be initialized to the value held by
+the #ClutterInterval.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_initial_value"
+              c:identifier="clutter_interval_get_initial_value"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the initial value of @interval and copies
+it into @value.
+The passed #GValue must be initialized to the value held by
+the #ClutterInterval.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_interval"
+              c:identifier="clutter_interval_get_interval"
+              version="1.0"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Variable arguments wrapper for clutter_interval_get_initial_value()
+and clutter_interval_get_final_value() that avoids using the
+#GValue arguments:
+|[
+gint a = 0, b = 0;
+clutter_interval_get_interval (interval, &amp;a, &amp;b);
+]|
+This function is meant for the convenience of the C API; bindings
+should reimplement this function using the #GValue-based API.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value_type"
+              c:identifier="clutter_interval_get_value_type"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the #GType of the values inside @interval.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type of the value, or G_TYPE_INVALID</doc>
+          <type name="GType" c:type="GType"/>
+        </return-value>
+      </method>
+      <method name="peek_final_value"
+              c:identifier="clutter_interval_peek_final_value"
+              version="1.0">
+        <doc xml:whitespace="preserve">Gets the pointer to the final value of @interval
+The value is owned by the #ClutterInterval and it should not be
+modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the final value of the interval.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+      </method>
+      <method name="peek_initial_value"
+              c:identifier="clutter_interval_peek_initial_value"
+              version="1.0">
+        <doc xml:whitespace="preserve">Gets the pointer to the initial value of @interval
+The value is owned by the #ClutterInterval and it should not be
+modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the initial value of the interval.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+      </method>
+      <method name="set_final_value"
+              c:identifier="clutter_interval_set_final_value"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the final value of @interval to @value. The value is
+copied inside the #ClutterInterval.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_initial_value"
+              c:identifier="clutter_interval_set_initial_value"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the initial value of @interval to @value. The value is copied
+inside the #ClutterInterval.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_interval"
+              c:identifier="clutter_interval_set_interval"
+              version="1.0"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Variable arguments wrapper for clutter_interval_set_initial_value()
+and clutter_interval_set_final_value() that avoids using the
+#GValue arguments:
+|[
+clutter_interval_set_interval (interval, 0, 50);
+clutter_interval_set_interval (interval, 1.0, 0.0);
+clutter_interval_set_interval (interval, FALSE, TRUE);
+]|
+This function is meant for the convenience of the C API; bindings
+should reimplement this function using the #GValue-based API.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="validate"
+              c:identifier="clutter_interval_validate"
+              version="1.0">
+        <doc xml:whitespace="preserve">Validates the initial and final values of @interval against
+a #GParamSpec.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #ClutterInterval is valid, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GParamSpec</doc>
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="value-type"
+                version="1.0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The type of the values in the interval.</doc>
+        <type name="GType"/>
+      </property>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="GObject.InitiallyUnowned" c:type="GInitiallyUnowned"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="IntervalPrivate" c:type="ClutterIntervalPrivate*"/>
+      </field>
+    </class>
+    <record name="IntervalClass"
+            c:type="ClutterIntervalClass"
+            glib:is-gtype-struct-for="Interval"
+            version="1.0">
+      <doc xml:whitespace="preserve">The #ClutterIntervalClass contains only private data.</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="GObject.InitiallyUnownedClass"
+              c:type="GInitiallyUnownedClass"/>
+      </field>
+      <field name="validate">
+        <callback name="validate">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the #ClutterInterval is valid, %FALSE otherwise</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="interval" transfer-ownership="none">
+              <type name="Interval" c:type="ClutterInterval*"/>
+            </parameter>
+            <parameter name="pspec" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GParamSpec</doc>
+              <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="compute_value">
+        <callback name="compute_value">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the operation was successful</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="interval" transfer-ownership="none">
+              <type name="Interval" c:type="ClutterInterval*"/>
+            </parameter>
+            <parameter name="factor" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the progress factor, between 0 and 1</doc>
+              <type name="gdouble" c:type="gdouble"/>
+            </parameter>
+            <parameter name="value"
+                       direction="out"
+                       caller-allocates="1"
+                       transfer-ownership="none">
+              <doc xml:whitespace="preserve">return location for an initialized #GValue</doc>
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_reserved1" introspectable="0">
+        <callback name="_clutter_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved2" introspectable="0">
+        <callback name="_clutter_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved3" introspectable="0">
+        <callback name="_clutter_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved4" introspectable="0">
+        <callback name="_clutter_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved5" introspectable="0">
+        <callback name="_clutter_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved6" introspectable="0">
+        <callback name="_clutter_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="IntervalPrivate"
+            c:type="ClutterIntervalPrivate"
+            disguised="1">
+    </record>
+    <constant name="Iogonek" value="967">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Itilde" value="933">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="J" value="74">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Jcircumflex" value="684">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="K" value="75">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_0" value="48">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_1" value="49">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_2" value="50">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3" value="51">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_AltCursor" value="64784">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Attn" value="64782">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_BackTab" value="64773">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_ChangeScreen" value="64793">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Copy" value="64789">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_CursorBlink" value="64783">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_CursorSelect" value="64796">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_DeleteWord" value="64794">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Duplicate" value="64769">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Enter" value="64798">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_EraseEOF" value="64774">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_EraseInput" value="64775">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_ExSelect" value="64795">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_FieldMark" value="64770">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Ident" value="64787">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Jump" value="64786">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_KeyClick" value="64785">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Left2" value="64772">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_PA1" value="64778">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_PA2" value="64779">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_PA3" value="64780">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Play" value="64790">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_PrintScreen" value="64797">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Quit" value="64777">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Record" value="64792">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Reset" value="64776">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Right2" value="64771">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Rule" value="64788">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Setup" value="64791">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_3270_Test" value="64781">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_4" value="52">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_5" value="53">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_6" value="54">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_7" value="55">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_8" value="56">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_9" value="57">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_A" value="65">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AE" value="198">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Aacute" value="193">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Abelowdot" value="16785056">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Abreve" value="451">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Abreveacute" value="16785070">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Abrevebelowdot" value="16785078">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Abrevegrave" value="16785072">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Abrevehook" value="16785074">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Abrevetilde" value="16785076">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AccessX_Enable" value="65136">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AccessX_Feedback_Enable" value="65137">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Acircumflex" value="194">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Acircumflexacute" value="16785060">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Acircumflexbelowdot" value="16785068">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Acircumflexgrave" value="16785062">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Acircumflexhook" value="16785064">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Acircumflextilde" value="16785066">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AddFavorite" value="269025081">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Adiaeresis" value="196">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Agrave" value="192">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ahook" value="16785058">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Alt_L" value="65513">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Alt_R" value="65514">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Amacron" value="960">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Aogonek" value="417">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ApplicationLeft" value="269025104">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ApplicationRight" value="269025105">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_0" value="16778848">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_1" value="16778849">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_2" value="16778850">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_3" value="16778851">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_4" value="16778852">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_5" value="16778853">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_6" value="16778854">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_7" value="16778855">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_8" value="16778856">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_9" value="16778857">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_ain" value="1497">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_alef" value="1479">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_alefmaksura" value="1513">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_beh" value="1480">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_comma" value="1452">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_dad" value="1494">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_dal" value="1487">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_damma" value="1519">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_dammatan" value="1516">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_ddal" value="16778888">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_farsi_yeh" value="16778956">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_fatha" value="1518">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_fathatan" value="1515">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_feh" value="1505">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_fullstop" value="16778964">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_gaf" value="16778927">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_ghain" value="1498">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_ha" value="1511">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_hah" value="1485">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_hamza" value="1473">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_hamza_above" value="16778836">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_hamza_below" value="16778837">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_hamzaonalef" value="1475">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_hamzaonwaw" value="1476">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_hamzaonyeh" value="1478">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_hamzaunderalef" value="1477">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_heh" value="1511">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_heh_doachashmee" value="16778942">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_heh_goal" value="16778945">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_jeem" value="1484">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_jeh" value="16778904">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_kaf" value="1507">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_kasra" value="1520">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_kasratan" value="1517">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_keheh" value="16778921">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_khah" value="1486">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_lam" value="1508">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_madda_above" value="16778835">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_maddaonalef" value="1474">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_meem" value="1509">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_noon" value="1510">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_noon_ghunna" value="16778938">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_peh" value="16778878">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_percent" value="16778858">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_qaf" value="1506">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_question_mark" value="1471">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_ra" value="1489">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_rreh" value="16778897">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_sad" value="1493">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_seen" value="1491">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_semicolon" value="1467">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_shadda" value="1521">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_sheen" value="1492">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_sukun" value="1522">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_superscript_alef" value="16778864">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_switch" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_tah" value="1495">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_tatweel" value="1504">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_tcheh" value="16778886">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_teh" value="1482">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_tehmarbuta" value="1481">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_thal" value="1488">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_theh" value="1483">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_tteh" value="16778873">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_veh" value="16778916">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_waw" value="1512">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_yeh" value="1514">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_yeh_baree" value="16778962">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_zah" value="1496">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Arabic_zain" value="1490">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Aring" value="197">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_AT" value="16778552">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_AYB" value="16778545">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_BEN" value="16778546">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_CHA" value="16778569">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_DA" value="16778548">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_DZA" value="16778561">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_E" value="16778551">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_FE" value="16778582">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_GHAT" value="16778562">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_GIM" value="16778547">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_HI" value="16778565">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_HO" value="16778560">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_INI" value="16778555">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_JE" value="16778571">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_KE" value="16778580">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_KEN" value="16778559">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_KHE" value="16778557">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_LYUN" value="16778556">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_MEN" value="16778564">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_NU" value="16778566">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_O" value="16778581">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_PE" value="16778570">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_PYUR" value="16778579">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_RA" value="16778572">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_RE" value="16778576">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_SE" value="16778573">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_SHA" value="16778567">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_TCHE" value="16778563">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_TO" value="16778553">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_TSA" value="16778558">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_TSO" value="16778577">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_TYUN" value="16778575">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_VEV" value="16778574">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_VO" value="16778568">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_VYUN" value="16778578">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_YECH" value="16778549">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_ZA" value="16778550">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_ZHE" value="16778554">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_accent" value="16778587">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_amanak" value="16778588">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_apostrophe" value="16778586">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_at" value="16778600">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_ayb" value="16778593">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_ben" value="16778594">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_but" value="16778589">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_cha" value="16778617">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_da" value="16778596">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_dza" value="16778609">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_e" value="16778599">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_exclam" value="16778588">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_fe" value="16778630">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_full_stop" value="16778633">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_ghat" value="16778610">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_gim" value="16778595">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_hi" value="16778613">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_ho" value="16778608">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_hyphen" value="16778634">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_ini" value="16778603">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_je" value="16778619">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_ke" value="16778628">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_ken" value="16778607">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_khe" value="16778605">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_ligature_ew" value="16778631">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_lyun" value="16778604">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_men" value="16778612">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_nu" value="16778614">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_o" value="16778629">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_paruyk" value="16778590">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_pe" value="16778618">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_pyur" value="16778627">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_question" value="16778590">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_ra" value="16778620">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_re" value="16778624">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_se" value="16778621">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_separation_mark" value="16778589">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_sha" value="16778615">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_shesht" value="16778587">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_tche" value="16778611">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_to" value="16778601">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_tsa" value="16778606">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_tso" value="16778625">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_tyun" value="16778623">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_verjaket" value="16778633">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_vev" value="16778622">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_vo" value="16778616">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_vyun" value="16778626">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_yech" value="16778597">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_yentamna" value="16778634">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_za" value="16778598">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Armenian_zhe" value="16778602">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Atilde" value="195">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudibleBell_Enable" value="65146">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioCycleTrack" value="269025179">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioForward" value="269025175">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioLowerVolume" value="269025041">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioMedia" value="269025074">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioMute" value="269025042">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioNext" value="269025047">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioPause" value="269025073">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioPlay" value="269025044">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioPrev" value="269025046">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioRaiseVolume" value="269025043">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioRandomPlay" value="269025177">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioRecord" value="269025052">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioRepeat" value="269025176">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioRewind" value="269025086">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_AudioStop" value="269025045">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Away" value="269025165">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_B" value="66">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Babovedot" value="16784898">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Back" value="269025062">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_BackForward" value="269025087">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_BackSpace" value="65288">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Battery" value="269025171">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Begin" value="65368">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Blue" value="269025190">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Bluetooth" value="269025172">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Book" value="269025106">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_BounceKeys_Enable" value="65140">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Break" value="65387">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_BrightnessAdjust" value="269025083">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Byelorussian_SHORTU" value="1726">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Byelorussian_shortu" value="1710">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_C" value="67">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_CD" value="269025107">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cabovedot" value="709">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cacute" value="454">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Calculator" value="269025053">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Calendar" value="269025056">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cancel" value="65385">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Caps_Lock" value="65509">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ccaron" value="456">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ccedilla" value="199">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ccircumflex" value="710">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Clear" value="65291">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ClearGrab" value="269024801">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Close" value="269025110">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Codeinput" value="65335">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ColonSign" value="16785569">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Community" value="269025085">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ContrastAdjust" value="269025058">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Control_L" value="65507">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Control_R" value="65508">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Copy" value="269025111">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_CruzeiroSign" value="16785570">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cut" value="269025112">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_CycleAngle" value="269025180">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_A" value="1761">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_BE" value="1762">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_CHE" value="1790">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_CHE_descender" value="16778422">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_CHE_vertstroke" value="16778424">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_DE" value="1764">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_DZHE" value="1727">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_E" value="1788">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_EF" value="1766">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_EL" value="1772">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_EM" value="1773">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_EN" value="1774">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_EN_descender" value="16778402">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ER" value="1778">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ES" value="1779">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_GHE" value="1767">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_GHE_bar" value="16778386">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_HA" value="1768">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_HARDSIGN" value="1791">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_HA_descender" value="16778418">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_I" value="1769">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_IE" value="1765">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_IO" value="1715">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_I_macron" value="16778466">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_JE" value="1720">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_KA" value="1771">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_KA_descender" value="16778394">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_KA_vertstroke" value="16778396">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_LJE" value="1721">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_NJE" value="1722">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_O" value="1775">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_O_bar" value="16778472">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_PE" value="1776">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_SCHWA" value="16778456">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_SHA" value="1787">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_SHCHA" value="1789">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_SHHA" value="16778426">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_SHORTI" value="1770">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_SOFTSIGN" value="1784">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_TE" value="1780">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_TSE" value="1763">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_U" value="1781">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_U_macron" value="16778478">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_U_straight" value="16778414">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_U_straight_bar" value="16778416">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_VE" value="1783">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_YA" value="1777">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_YERU" value="1785">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_YU" value="1760">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ZE" value="1786">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ZHE" value="1782">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ZHE_descender" value="16778390">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_a" value="1729">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_be" value="1730">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_che" value="1758">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_che_descender" value="16778423">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_che_vertstroke" value="16778425">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_de" value="1732">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_dzhe" value="1711">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_e" value="1756">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ef" value="1734">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_el" value="1740">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_em" value="1741">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_en" value="1742">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_en_descender" value="16778403">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_er" value="1746">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_es" value="1747">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ghe" value="1735">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ghe_bar" value="16778387">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ha" value="1736">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ha_descender" value="16778419">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_hardsign" value="1759">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_i" value="1737">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_i_macron" value="16778467">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ie" value="1733">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_io" value="1699">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_je" value="1704">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ka" value="1739">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ka_descender" value="16778395">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ka_vertstroke" value="16778397">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_lje" value="1705">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_nje" value="1706">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_o" value="1743">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_o_bar" value="16778473">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_pe" value="1744">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_schwa" value="16778457">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_sha" value="1755">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_shcha" value="1757">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_shha" value="16778427">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_shorti" value="1738">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_softsign" value="1752">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_te" value="1748">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_tse" value="1731">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_u" value="1749">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_u_macron" value="16778479">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_u_straight" value="16778415">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_u_straight_bar" value="16778417">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ve" value="1751">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ya" value="1745">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_yeru" value="1753">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_yu" value="1728">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_ze" value="1754">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_zhe" value="1750">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Cyrillic_zhe_descender" value="16778391">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_D" value="68">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_DOS" value="269025114">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Dabovedot" value="16784906">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Dcaron" value="463">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Delete" value="65535">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Display" value="269025113">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Documents" value="269025115">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_DongSign" value="16785579">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Down" value="65364">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Dstroke" value="464">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_E" value="69">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ENG" value="957">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ETH" value="208">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Eabovedot" value="972">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Eacute" value="201">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ebelowdot" value="16785080">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ecaron" value="460">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ecircumflex" value="202">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ecircumflexacute" value="16785086">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ecircumflexbelowdot" value="16785094">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ecircumflexgrave" value="16785088">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ecircumflexhook" value="16785090">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ecircumflextilde" value="16785092">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_EcuSign" value="16785568">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ediaeresis" value="203">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Egrave" value="200">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ehook" value="16785082">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Eisu_Shift" value="65327">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Eisu_toggle" value="65328">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Eject" value="269025068">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Emacron" value="938">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_End" value="65367">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Eogonek" value="458">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Escape" value="65307">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Eth" value="208">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Etilde" value="16785084">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_EuroSign" value="8364">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Excel" value="269025116">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Execute" value="65378">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Explorer" value="269025117">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F" value="70">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F1" value="65470">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F10" value="65479">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F11" value="65480">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F12" value="65481">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F13" value="65482">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F14" value="65483">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F15" value="65484">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F16" value="65485">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F17" value="65486">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F18" value="65487">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F19" value="65488">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F2" value="65471">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F20" value="65489">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F21" value="65490">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F22" value="65491">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F23" value="65492">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F24" value="65493">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F25" value="65494">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F26" value="65495">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F27" value="65496">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F28" value="65497">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F29" value="65498">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F3" value="65472">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F30" value="65499">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F31" value="65500">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F32" value="65501">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F33" value="65502">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F34" value="65503">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F35" value="65504">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F4" value="65473">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F5" value="65474">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F6" value="65475">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F7" value="65476">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F8" value="65477">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_F9" value="65478">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_FFrancSign" value="16785571">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Fabovedot" value="16784926">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Farsi_0" value="16778992">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Farsi_1" value="16778993">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Farsi_2" value="16778994">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Farsi_3" value="16778995">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Farsi_4" value="16778996">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Farsi_5" value="16778997">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Farsi_6" value="16778998">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Farsi_7" value="16778999">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Farsi_8" value="16779000">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Farsi_9" value="16779001">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Farsi_yeh" value="16778956">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Favorites" value="269025072">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Finance" value="269025084">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Find" value="65384">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_First_Virtual_Screen" value="65232">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Forward" value="269025063">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_FrameBack" value="269025181">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_FrameForward" value="269025182">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_G" value="71">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Gabovedot" value="725">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Game" value="269025118">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Gbreve" value="683">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Gcaron" value="16777702">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Gcedilla" value="939">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Gcircumflex" value="728">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_an" value="16781520">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_ban" value="16781521">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_can" value="16781546">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_char" value="16781549">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_chin" value="16781545">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_cil" value="16781548">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_don" value="16781523">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_en" value="16781524">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_fi" value="16781558">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_gan" value="16781522">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_ghan" value="16781542">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_hae" value="16781552">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_har" value="16781556">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_he" value="16781553">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_hie" value="16781554">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_hoe" value="16781557">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_in" value="16781528">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_jhan" value="16781551">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_jil" value="16781547">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_kan" value="16781529">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_khar" value="16781541">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_las" value="16781530">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_man" value="16781531">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_nar" value="16781532">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_on" value="16781533">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_par" value="16781534">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_phar" value="16781540">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_qar" value="16781543">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_rae" value="16781536">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_san" value="16781537">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_shin" value="16781544">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_tan" value="16781527">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_tar" value="16781538">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_un" value="16781539">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_vin" value="16781525">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_we" value="16781555">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_xan" value="16781550">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_zen" value="16781526">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Georgian_zhar" value="16781535">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Go" value="269025119">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_ALPHA" value="1985">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_ALPHAaccent" value="1953">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_BETA" value="1986">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_CHI" value="2007">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_DELTA" value="1988">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_EPSILON" value="1989">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_EPSILONaccent" value="1954">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_ETA" value="1991">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_ETAaccent" value="1955">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_GAMMA" value="1987">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_IOTA" value="1993">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_IOTAaccent" value="1956">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_IOTAdiaeresis" value="1957">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_IOTAdieresis" value="1957">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_KAPPA" value="1994">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_LAMBDA" value="1995">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_LAMDA" value="1995">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_MU" value="1996">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_NU" value="1997">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_OMEGA" value="2009">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_OMEGAaccent" value="1963">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_OMICRON" value="1999">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_OMICRONaccent" value="1959">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_PHI" value="2006">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_PI" value="2000">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_PSI" value="2008">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_RHO" value="2001">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_SIGMA" value="2002">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_TAU" value="2004">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_THETA" value="1992">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_UPSILON" value="2005">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_UPSILONaccent" value="1960">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_UPSILONdieresis" value="1961">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_XI" value="1998">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_ZETA" value="1990">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_accentdieresis" value="1966">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_alpha" value="2017">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_alphaaccent" value="1969">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_beta" value="2018">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_chi" value="2039">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_delta" value="2020">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_epsilon" value="2021">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_epsilonaccent" value="1970">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_eta" value="2023">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_etaaccent" value="1971">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_finalsmallsigma" value="2035">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_gamma" value="2019">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_horizbar" value="1967">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_iota" value="2025">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_iotaaccent" value="1972">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_iotaaccentdieresis" value="1974">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_iotadieresis" value="1973">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_kappa" value="2026">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_lambda" value="2027">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_lamda" value="2027">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_mu" value="2028">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_nu" value="2029">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_omega" value="2041">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_omegaaccent" value="1979">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_omicron" value="2031">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_omicronaccent" value="1975">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_phi" value="2038">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_pi" value="2032">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_psi" value="2040">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_rho" value="2033">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_sigma" value="2034">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_switch" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_tau" value="2036">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_theta" value="2024">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_upsilon" value="2037">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_upsilonaccent" value="1976">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_upsilonaccentdieresis" value="1978">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_upsilondieresis" value="1977">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_xi" value="2030">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Greek_zeta" value="2022">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Green" value="269025188">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_H" value="72">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul" value="65329">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_A" value="3775">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_AE" value="3776">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_AraeA" value="3830">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_AraeAE" value="3831">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Banja" value="65337">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Cieuc" value="3770">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Codeinput" value="65335">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Dikeud" value="3751">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_E" value="3780">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_EO" value="3779">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_EU" value="3793">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_End" value="65331">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Hanja" value="65332">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Hieuh" value="3774">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_I" value="3795">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Ieung" value="3767">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Cieuc" value="3818">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Dikeud" value="3802">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Hieuh" value="3822">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Ieung" value="3816">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Jieuj" value="3817">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Khieuq" value="3819">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Kiyeog" value="3796">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_KiyeogSios" value="3798">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_KkogjiDalrinIeung" value="3833">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Mieum" value="3811">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Nieun" value="3799">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_NieunHieuh" value="3801">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_NieunJieuj" value="3800">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_PanSios" value="3832">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Phieuf" value="3821">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Pieub" value="3812">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_PieubSios" value="3813">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Rieul" value="3803">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_RieulHieuh" value="3810">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_RieulKiyeog" value="3804">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_RieulMieum" value="3805">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_RieulPhieuf" value="3809">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_RieulPieub" value="3806">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_RieulSios" value="3807">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_RieulTieut" value="3808">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Sios" value="3814">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_SsangKiyeog" value="3797">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_SsangSios" value="3815">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_Tieut" value="3820">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_J_YeorinHieuh" value="3834">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Jamo" value="65333">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Jeonja" value="65336">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Jieuj" value="3768">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Khieuq" value="3771">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Kiyeog" value="3745">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_KiyeogSios" value="3747">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_KkogjiDalrinIeung" value="3827">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Mieum" value="3761">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_MultipleCandidate" value="65341">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Nieun" value="3748">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_NieunHieuh" value="3750">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_NieunJieuj" value="3749">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_O" value="3783">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_OE" value="3786">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_PanSios" value="3826">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Phieuf" value="3773">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Pieub" value="3762">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_PieubSios" value="3764">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_PostHanja" value="65339">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_PreHanja" value="65338">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_PreviousCandidate" value="65342">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Rieul" value="3753">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_RieulHieuh" value="3760">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_RieulKiyeog" value="3754">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_RieulMieum" value="3755">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_RieulPhieuf" value="3759">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_RieulPieub" value="3756">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_RieulSios" value="3757">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_RieulTieut" value="3758">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_RieulYeorinHieuh" value="3823">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Romaja" value="65334">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_SingleCandidate" value="65340">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Sios" value="3765">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Special" value="65343">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_SsangDikeud" value="3752">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_SsangJieuj" value="3769">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_SsangKiyeog" value="3746">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_SsangPieub" value="3763">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_SsangSios" value="3766">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Start" value="65330">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_SunkyeongeumMieum" value="3824">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_SunkyeongeumPhieuf" value="3828">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_SunkyeongeumPieub" value="3825">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_Tieut" value="3772">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_U" value="3788">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_WA" value="3784">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_WAE" value="3785">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_WE" value="3790">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_WEO" value="3789">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_WI" value="3791">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_YA" value="3777">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_YAE" value="3778">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_YE" value="3782">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_YEO" value="3781">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_YI" value="3794">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_YO" value="3787">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_YU" value="3792">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_YeorinHieuh" value="3829">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hangul_switch" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hankaku" value="65321">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hcircumflex" value="678">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hebrew_switch" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Help" value="65386">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Henkan" value="65315">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Henkan_Mode" value="65315">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hibernate" value="269025192">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hiragana" value="65317">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hiragana_Katakana" value="65319">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_History" value="269025079">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Home" value="65360">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_HomePage" value="269025048">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_HotLinks" value="269025082">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hstroke" value="673">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hyper_L" value="65517">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Hyper_R" value="65518">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_I" value="73">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Center_Object" value="65075">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Continuous_Underline" value="65072">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Discontinuous_Underline" value="65073">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Emphasize" value="65074">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Enter" value="65076">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Fast_Cursor_Down" value="65071">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Fast_Cursor_Left" value="65068">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Fast_Cursor_Right" value="65069">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Fast_Cursor_Up" value="65070">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_First_Group" value="65036">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_First_Group_Lock" value="65037">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Group_Latch" value="65030">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Group_Lock" value="65031">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Group_Shift" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Last_Group" value="65038">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Last_Group_Lock" value="65039">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Left_Tab" value="65056">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Level2_Latch" value="65026">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Level3_Latch" value="65028">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Level3_Lock" value="65029">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Level3_Shift" value="65027">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Level5_Latch" value="65042">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Level5_Lock" value="65043">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Level5_Shift" value="65041">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Lock" value="65025">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Move_Line_Down" value="65058">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Move_Line_Up" value="65057">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Next_Group" value="65032">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Next_Group_Lock" value="65033">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Partial_Line_Down" value="65060">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Partial_Line_Up" value="65059">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Partial_Space_Left" value="65061">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Partial_Space_Right" value="65062">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Prev_Group" value="65034">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Prev_Group_Lock" value="65035">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Release_Both_Margins" value="65067">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Release_Margin_Left" value="65065">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Release_Margin_Right" value="65066">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Set_Margin_Left" value="65063">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ISO_Set_Margin_Right" value="65064">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Iabovedot" value="681">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Iacute" value="205">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ibelowdot" value="16785098">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ibreve" value="16777516">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Icircumflex" value="206">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Idiaeresis" value="207">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Igrave" value="204">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ihook" value="16785096">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Imacron" value="975">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Insert" value="65379">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Iogonek" value="967">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Itilde" value="933">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_J" value="74">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Jcircumflex" value="684">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_K" value="75">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_0" value="65456">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_1" value="65457">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_2" value="65458">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_3" value="65459">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_4" value="65460">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_5" value="65461">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_6" value="65462">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_7" value="65463">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_8" value="65464">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_9" value="65465">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Add" value="65451">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Begin" value="65437">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Decimal" value="65454">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Delete" value="65439">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Divide" value="65455">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Down" value="65433">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_End" value="65436">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Enter" value="65421">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Equal" value="65469">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_F1" value="65425">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_F2" value="65426">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_F3" value="65427">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_F4" value="65428">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Home" value="65429">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Insert" value="65438">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Left" value="65430">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Multiply" value="65450">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Next" value="65435">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Page_Down" value="65435">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Page_Up" value="65434">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Prior" value="65434">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Right" value="65432">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Separator" value="65452">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Space" value="65408">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Subtract" value="65453">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Tab" value="65417">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KP_Up" value="65431">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Kana_Lock" value="65325">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Kana_Shift" value="65326">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Kanji" value="65313">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Kanji_Bangou" value="65335">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Katakana" value="65318">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KbdBrightnessDown" value="269025030">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KbdBrightnessUp" value="269025029">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_KbdLightOnOff" value="269025028">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Kcedilla" value="979">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Korean_Won" value="3839">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_L" value="76">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_L1" value="65480">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_L10" value="65489">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_L2" value="65481">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_L3" value="65482">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_L4" value="65483">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_L5" value="65484">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_L6" value="65485">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_L7" value="65486">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_L8" value="65487">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_L9" value="65488">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Lacute" value="453">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Last_Virtual_Screen" value="65236">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Launch0" value="269025088">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Launch1" value="269025089">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Launch2" value="269025090">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Launch3" value="269025091">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Launch4" value="269025092">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Launch5" value="269025093">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Launch6" value="269025094">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Launch7" value="269025095">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Launch8" value="269025096">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Launch9" value="269025097">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_LaunchA" value="269025098">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_LaunchB" value="269025099">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_LaunchC" value="269025100">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_LaunchD" value="269025101">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_LaunchE" value="269025102">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_LaunchF" value="269025103">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Lbelowdot" value="16784950">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Lcaron" value="421">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Lcedilla" value="934">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Left" value="65361">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_LightBulb" value="269025077">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Linefeed" value="65290">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_LiraSign" value="16785572">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_LogOff" value="269025121">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Lstroke" value="419">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_M" value="77">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Mabovedot" value="16784960">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Macedonia_DSE" value="1717">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Macedonia_GJE" value="1714">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Macedonia_KJE" value="1724">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Macedonia_dse" value="1701">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Macedonia_gje" value="1698">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Macedonia_kje" value="1708">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Mae_Koho" value="65342">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Mail" value="269025049">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_MailForward" value="269025168">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Market" value="269025122">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Massyo" value="65324">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Meeting" value="269025123">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Memo" value="269025054">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Menu" value="65383">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_MenuKB" value="269025125">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_MenuPB" value="269025126">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Messenger" value="269025166">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Meta_L" value="65511">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Meta_R" value="65512">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_MillSign" value="16785573">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ModeLock" value="269025025">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Mode_switch" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_MonBrightnessDown" value="269025027">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_MonBrightnessUp" value="269025026">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_MouseKeys_Accel_Enable" value="65143">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_MouseKeys_Enable" value="65142">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Muhenkan" value="65314">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Multi_key" value="65312">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_MultipleCandidate" value="65341">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Music" value="269025170">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_MyComputer" value="269025075">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_MySites" value="269025127">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_N" value="78">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Nacute" value="465">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_NairaSign" value="16785574">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ncaron" value="466">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ncedilla" value="977">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_New" value="269025128">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_NewSheqelSign" value="16785578">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_News" value="269025129">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Next" value="65366">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Next_VMode" value="269024802">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Next_Virtual_Screen" value="65234">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ntilde" value="209">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Num_Lock" value="65407">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_O" value="79">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_OE" value="5052">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Oacute" value="211">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Obarred" value="16777631">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Obelowdot" value="16785100">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ocaron" value="16777681">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ocircumflex" value="212">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ocircumflexacute" value="16785104">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ocircumflexbelowdot" value="16785112">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ocircumflexgrave" value="16785106">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ocircumflexhook" value="16785108">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ocircumflextilde" value="16785110">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Odiaeresis" value="214">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Odoubleacute" value="469">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_OfficeHome" value="269025130">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ograve" value="210">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ohook" value="16785102">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ohorn" value="16777632">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ohornacute" value="16785114">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ohornbelowdot" value="16785122">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ohorngrave" value="16785116">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ohornhook" value="16785118">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ohorntilde" value="16785120">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Omacron" value="978">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ooblique" value="216">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Open" value="269025131">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_OpenURL" value="269025080">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Option" value="269025132">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Oslash" value="216">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Otilde" value="213">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Overlay1_Enable" value="65144">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Overlay2_Enable" value="65145">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_P" value="80">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pabovedot" value="16784982">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Page_Down" value="65366">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Page_Up" value="65365">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Paste" value="269025133">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pause" value="65299">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_PesetaSign" value="16785575">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Phone" value="269025134">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pictures" value="269025169">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Accelerate" value="65274">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Button1" value="65257">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Button2" value="65258">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Button3" value="65259">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Button4" value="65260">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Button5" value="65261">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Button_Dflt" value="65256">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_DblClick1" value="65263">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_DblClick2" value="65264">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_DblClick3" value="65265">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_DblClick4" value="65266">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_DblClick5" value="65267">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_DblClick_Dflt" value="65262">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_DfltBtnNext" value="65275">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_DfltBtnPrev" value="65276">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Down" value="65251">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_DownLeft" value="65254">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_DownRight" value="65255">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Drag1" value="65269">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Drag2" value="65270">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Drag3" value="65271">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Drag4" value="65272">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Drag5" value="65277">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Drag_Dflt" value="65268">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_EnableKeys" value="65273">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Left" value="65248">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Right" value="65249">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_Up" value="65250">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_UpLeft" value="65252">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Pointer_UpRight" value="65253">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_PowerDown" value="269025057">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_PowerOff" value="269025066">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Prev_VMode" value="269024803">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Prev_Virtual_Screen" value="65233">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_PreviousCandidate" value="65342">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Print" value="65377">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Prior" value="65365">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Q" value="81">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R" value="82">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R1" value="65490">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R10" value="65499">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R11" value="65500">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R12" value="65501">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R13" value="65502">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R14" value="65503">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R15" value="65504">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R2" value="65491">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R3" value="65492">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R4" value="65493">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R5" value="65494">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R6" value="65495">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R7" value="65496">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R8" value="65497">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_R9" value="65498">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Racute" value="448">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Rcaron" value="472">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Rcedilla" value="931">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Red" value="269025187">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Redo" value="65382">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Refresh" value="269025065">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Reload" value="269025139">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_RepeatKeys_Enable" value="65138">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Reply" value="269025138">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Return" value="65293">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Right" value="65363">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_RockerDown" value="269025060">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_RockerEnter" value="269025061">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_RockerUp" value="269025059">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Romaji" value="65316">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_RotateWindows" value="269025140">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_RotationKB" value="269025142">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_RotationPB" value="269025141">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_RupeeSign" value="16785576">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_S" value="83">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_SCHWA" value="16777615">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Sabovedot" value="16784992">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Sacute" value="422">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Save" value="269025143">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Scaron" value="425">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Scedilla" value="426">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Scircumflex" value="734">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ScreenSaver" value="269025069">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ScrollClick" value="269025146">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ScrollDown" value="269025145">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ScrollUp" value="269025144">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Scroll_Lock" value="65300">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Search" value="269025051">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Select" value="65376">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_SelectButton" value="269025184">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Send" value="269025147">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Serbian_DJE" value="1713">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Serbian_DZE" value="1727">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Serbian_JE" value="1720">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Serbian_LJE" value="1721">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Serbian_NJE" value="1722">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Serbian_TSHE" value="1723">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Serbian_dje" value="1697">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Serbian_dze" value="1711">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Serbian_je" value="1704">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Serbian_lje" value="1705">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Serbian_nje" value="1706">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Serbian_tshe" value="1707">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Shift_L" value="65505">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Shift_Lock" value="65510">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Shift_R" value="65506">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Shop" value="269025078">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_SingleCandidate" value="65340">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Sleep" value="269025071">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_SlowKeys_Enable" value="65139">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Spell" value="269025148">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_SplitScreen" value="269025149">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Standby" value="269025040">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Start" value="269025050">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_StickyKeys_Enable" value="65141">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Stop" value="269025064">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Subtitle" value="269025178">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Super_L" value="65515">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Super_R" value="65516">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Support" value="269025150">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Suspend" value="269025191">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Switch_VT_1" value="269024769">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Switch_VT_10" value="269024778">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Switch_VT_11" value="269024779">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Switch_VT_12" value="269024780">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Switch_VT_2" value="269024770">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Switch_VT_3" value="269024771">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Switch_VT_4" value="269024772">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Switch_VT_5" value="269024773">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Switch_VT_6" value="269024774">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Switch_VT_7" value="269024775">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Switch_VT_8" value="269024776">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Switch_VT_9" value="269024777">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Sys_Req" value="65301">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_T" value="84">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_THORN" value="222">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Tab" value="65289">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Tabovedot" value="16785002">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_TaskPane" value="269025151">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Tcaron" value="427">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Tcedilla" value="478">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Terminal" value="269025152">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Terminate_Server" value="65237">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_baht" value="3551">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_bobaimai" value="3514">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_chochan" value="3496">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_chochang" value="3498">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_choching" value="3497">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_chochoe" value="3500">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_dochada" value="3502">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_dodek" value="3508">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_fofa" value="3517">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_fofan" value="3519">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_hohip" value="3531">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_honokhuk" value="3534">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_khokhai" value="3490">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_khokhon" value="3493">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_khokhuat" value="3491">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_khokhwai" value="3492">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_khorakhang" value="3494">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_kokai" value="3489">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_lakkhangyao" value="3557">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_lekchet" value="3575">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_lekha" value="3573">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_lekhok" value="3574">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_lekkao" value="3577">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_leknung" value="3569">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_lekpaet" value="3576">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_leksam" value="3571">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_leksi" value="3572">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_leksong" value="3570">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_leksun" value="3568">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_lochula" value="3532">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_loling" value="3525">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_lu" value="3526">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_maichattawa" value="3563">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_maiek" value="3560">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_maihanakat" value="3537">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_maihanakat_maitho" value="3550">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_maitaikhu" value="3559">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_maitho" value="3561">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_maitri" value="3562">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_maiyamok" value="3558">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_moma" value="3521">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_ngongu" value="3495">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_nikhahit" value="3565">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_nonen" value="3507">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_nonu" value="3513">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_oang" value="3533">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_paiyannoi" value="3535">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_phinthu" value="3546">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_phophan" value="3518">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_phophung" value="3516">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_phosamphao" value="3520">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_popla" value="3515">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_rorua" value="3523">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_ru" value="3524">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_saraa" value="3536">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_saraaa" value="3538">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_saraae" value="3553">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_saraaimaimalai" value="3556">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_saraaimaimuan" value="3555">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_saraam" value="3539">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_sarae" value="3552">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_sarai" value="3540">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_saraii" value="3541">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_sarao" value="3554">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_sarau" value="3544">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_saraue" value="3542">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_sarauee" value="3543">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_sarauu" value="3545">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_sorusi" value="3529">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_sosala" value="3528">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_soso" value="3499">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_sosua" value="3530">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_thanthakhat" value="3564">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_thonangmontho" value="3505">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_thophuthao" value="3506">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_thothahan" value="3511">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_thothan" value="3504">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_thothong" value="3512">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_thothung" value="3510">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_topatak" value="3503">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_totao" value="3509">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_wowaen" value="3527">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_yoyak" value="3522">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thai_yoying" value="3501">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Thorn" value="222">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Time" value="269025183">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ToDoList" value="269025055">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Tools" value="269025153">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_TopMenu" value="269025186">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_TouchpadOff" value="269025201">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_TouchpadOn" value="269025200">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_TouchpadToggle" value="269025193">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Touroku" value="65323">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Travel" value="269025154">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Tslash" value="940">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_U" value="85">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_UWB" value="269025174">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Uacute" value="218">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ubelowdot" value="16785124">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ubreve" value="733">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ucircumflex" value="219">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Udiaeresis" value="220">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Udoubleacute" value="475">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ugrave" value="217">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Uhook" value="16785126">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Uhorn" value="16777647">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Uhornacute" value="16785128">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Uhornbelowdot" value="16785136">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Uhorngrave" value="16785130">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Uhornhook" value="16785132">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Uhorntilde" value="16785134">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukrainian_GHE_WITH_UPTURN" value="1725">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukrainian_I" value="1718">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukrainian_IE" value="1716">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukrainian_YI" value="1719">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukrainian_ghe_with_upturn" value="1709">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukrainian_i" value="1702">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukrainian_ie" value="1700">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukrainian_yi" value="1703">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukranian_I" value="1718">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukranian_JE" value="1716">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukranian_YI" value="1719">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukranian_i" value="1702">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukranian_je" value="1700">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ukranian_yi" value="1703">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Umacron" value="990">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Undo" value="65381">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ungrab" value="269024800">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Uogonek" value="985">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Up" value="65362">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Uring" value="473">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_User1KB" value="269025157">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_User2KB" value="269025158">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_UserPB" value="269025156">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Utilde" value="989">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_V" value="86">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_VendorHome" value="269025076">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Video" value="269025159">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_View" value="269025185">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_VoidSymbol" value="16777215">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_W" value="87">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_WLAN" value="269025173">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_WWW" value="269025070">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Wacute" value="16785026">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_WakeUp" value="269025067">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Wcircumflex" value="16777588">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Wdiaeresis" value="16785028">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_WebCam" value="269025167">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Wgrave" value="16785024">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_WheelButton" value="269025160">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_WindowClear" value="269025109">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_WonSign" value="16785577">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Word" value="269025161">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_X" value="88">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Xabovedot" value="16785034">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Xfer" value="269025162">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Y" value="89">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Yacute" value="221">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ybelowdot" value="16785140">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ycircumflex" value="16777590">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ydiaeresis" value="5054">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Yellow" value="269025189">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ygrave" value="16785138">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Yhook" value="16785142">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Ytilde" value="16785144">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Z" value="90">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Zabovedot" value="431">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Zacute" value="428">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Zcaron" value="430">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Zen_Koho" value="65341">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Zenkaku" value="65320">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Zenkaku_Hankaku" value="65322">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ZoomIn" value="269025163">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ZoomOut" value="269025164">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_Zstroke" value="16777653">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_a" value="97">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_aacute" value="225">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_abelowdot" value="16785057">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_abovedot" value="511">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_abreve" value="483">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_abreveacute" value="16785071">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_abrevebelowdot" value="16785079">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_abrevegrave" value="16785073">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_abrevehook" value="16785075">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_abrevetilde" value="16785077">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_acircumflex" value="226">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_acircumflexacute" value="16785061">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_acircumflexbelowdot" value="16785069">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_acircumflexgrave" value="16785063">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_acircumflexhook" value="16785065">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_acircumflextilde" value="16785067">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_acute" value="180">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_adiaeresis" value="228">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ae" value="230">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_agrave" value="224">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ahook" value="16785059">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_amacron" value="992">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ampersand" value="38">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_aogonek" value="433">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_apostrophe" value="39">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_approxeq" value="16785992">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_approximate" value="2248">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_aring" value="229">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_asciicircum" value="94">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_asciitilde" value="126">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_asterisk" value="42">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_at" value="64">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_atilde" value="227">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_b" value="98">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_babovedot" value="16784899">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_backslash" value="92">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ballotcross" value="2804">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_bar" value="124">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_because" value="16785973">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_blank" value="2527">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_botintegral" value="2213">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_botleftparens" value="2220">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_botleftsqbracket" value="2216">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_botleftsummation" value="2226">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_botrightparens" value="2222">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_botrightsqbracket" value="2218">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_botrightsummation" value="2230">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_bott" value="2550">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_botvertsummationconnector" value="2228">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braceleft" value="123">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braceright" value="125">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_bracketleft" value="91">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_bracketright" value="93">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_blank" value="16787456">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dot_1" value="65521">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dot_10" value="65530">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dot_2" value="65522">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dot_3" value="65523">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dot_4" value="65524">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dot_5" value="65525">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dot_6" value="65526">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dot_7" value="65527">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dot_8" value="65528">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dot_9" value="65529">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1" value="16787457">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12" value="16787459">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_123" value="16787463">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1234" value="16787471">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12345" value="16787487">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_123456" value="16787519">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1234567" value="16787583">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12345678" value="16787711">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1234568" value="16787647">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_123457" value="16787551">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1234578" value="16787679">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_123458" value="16787615">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12346" value="16787503">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_123467" value="16787567">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1234678" value="16787695">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_123468" value="16787631">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12347" value="16787535">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_123478" value="16787663">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12348" value="16787599">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1235" value="16787479">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12356" value="16787511">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_123567" value="16787575">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1235678" value="16787703">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_123568" value="16787639">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12357" value="16787543">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_123578" value="16787671">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12358" value="16787607">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1236" value="16787495">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12367" value="16787559">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_123678" value="16787687">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12368" value="16787623">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1237" value="16787527">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12378" value="16787655">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1238" value="16787591">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_124" value="16787467">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1245" value="16787483">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12456" value="16787515">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_124567" value="16787579">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1245678" value="16787707">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_124568" value="16787643">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12457" value="16787547">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_124578" value="16787675">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12458" value="16787611">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1246" value="16787499">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12467" value="16787563">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_124678" value="16787691">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12468" value="16787627">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1247" value="16787531">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12478" value="16787659">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1248" value="16787595">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_125" value="16787475">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1256" value="16787507">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12567" value="16787571">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_125678" value="16787699">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12568" value="16787635">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1257" value="16787539">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12578" value="16787667">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1258" value="16787603">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_126" value="16787491">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1267" value="16787555">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_12678" value="16787683">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1268" value="16787619">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_127" value="16787523">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1278" value="16787651">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_128" value="16787587">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_13" value="16787461">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_134" value="16787469">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1345" value="16787485">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_13456" value="16787517">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_134567" value="16787581">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1345678" value="16787709">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_134568" value="16787645">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_13457" value="16787549">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_134578" value="16787677">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_13458" value="16787613">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1346" value="16787501">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_13467" value="16787565">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_134678" value="16787693">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_13468" value="16787629">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1347" value="16787533">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_13478" value="16787661">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1348" value="16787597">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_135" value="16787477">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1356" value="16787509">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_13567" value="16787573">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_135678" value="16787701">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_13568" value="16787637">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1357" value="16787541">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_13578" value="16787669">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1358" value="16787605">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_136" value="16787493">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1367" value="16787557">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_13678" value="16787685">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1368" value="16787621">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_137" value="16787525">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1378" value="16787653">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_138" value="16787589">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_14" value="16787465">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_145" value="16787481">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1456" value="16787513">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_14567" value="16787577">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_145678" value="16787705">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_14568" value="16787641">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1457" value="16787545">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_14578" value="16787673">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1458" value="16787609">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_146" value="16787497">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1467" value="16787561">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_14678" value="16787689">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1468" value="16787625">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_147" value="16787529">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1478" value="16787657">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_148" value="16787593">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_15" value="16787473">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_156" value="16787505">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1567" value="16787569">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_15678" value="16787697">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1568" value="16787633">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_157" value="16787537">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1578" value="16787665">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_158" value="16787601">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_16" value="16787489">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_167" value="16787553">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_1678" value="16787681">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_168" value="16787617">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_17" value="16787521">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_178" value="16787649">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_18" value="16787585">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2" value="16787458">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_23" value="16787462">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_234" value="16787470">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2345" value="16787486">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_23456" value="16787518">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_234567" value="16787582">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2345678" value="16787710">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_234568" value="16787646">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_23457" value="16787550">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_234578" value="16787678">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_23458" value="16787614">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2346" value="16787502">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_23467" value="16787566">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_234678" value="16787694">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_23468" value="16787630">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2347" value="16787534">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_23478" value="16787662">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2348" value="16787598">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_235" value="16787478">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2356" value="16787510">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_23567" value="16787574">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_235678" value="16787702">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_23568" value="16787638">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2357" value="16787542">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_23578" value="16787670">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2358" value="16787606">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_236" value="16787494">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2367" value="16787558">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_23678" value="16787686">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2368" value="16787622">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_237" value="16787526">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2378" value="16787654">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_238" value="16787590">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_24" value="16787466">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_245" value="16787482">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2456" value="16787514">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_24567" value="16787578">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_245678" value="16787706">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_24568" value="16787642">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2457" value="16787546">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_24578" value="16787674">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2458" value="16787610">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_246" value="16787498">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2467" value="16787562">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_24678" value="16787690">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2468" value="16787626">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_247" value="16787530">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2478" value="16787658">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_248" value="16787594">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_25" value="16787474">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_256" value="16787506">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2567" value="16787570">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_25678" value="16787698">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2568" value="16787634">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_257" value="16787538">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2578" value="16787666">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_258" value="16787602">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_26" value="16787490">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_267" value="16787554">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_2678" value="16787682">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_268" value="16787618">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_27" value="16787522">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_278" value="16787650">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_28" value="16787586">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_3" value="16787460">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_34" value="16787468">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_345" value="16787484">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_3456" value="16787516">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_34567" value="16787580">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_345678" value="16787708">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_34568" value="16787644">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_3457" value="16787548">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_34578" value="16787676">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_3458" value="16787612">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_346" value="16787500">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_3467" value="16787564">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_34678" value="16787692">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_3468" value="16787628">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_347" value="16787532">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_3478" value="16787660">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_348" value="16787596">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_35" value="16787476">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_356" value="16787508">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_3567" value="16787572">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_35678" value="16787700">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_3568" value="16787636">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_357" value="16787540">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_3578" value="16787668">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_358" value="16787604">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_36" value="16787492">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_367" value="16787556">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_3678" value="16787684">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_368" value="16787620">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_37" value="16787524">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_378" value="16787652">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_38" value="16787588">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_4" value="16787464">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_45" value="16787480">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_456" value="16787512">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_4567" value="16787576">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_45678" value="16787704">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_4568" value="16787640">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_457" value="16787544">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_4578" value="16787672">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_458" value="16787608">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_46" value="16787496">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_467" value="16787560">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_4678" value="16787688">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_468" value="16787624">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_47" value="16787528">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_478" value="16787656">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_48" value="16787592">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_5" value="16787472">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_56" value="16787504">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_567" value="16787568">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_5678" value="16787696">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_568" value="16787632">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_57" value="16787536">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_578" value="16787664">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_58" value="16787600">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_6" value="16787488">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_67" value="16787552">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_678" value="16787680">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_68" value="16787616">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_7" value="16787520">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_78" value="16787648">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_braille_dots_8" value="16787584">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_breve" value="418">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_brokenbar" value="166">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_c" value="99">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_cabovedot" value="741">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_cacute" value="486">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_careof" value="2744">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_caret" value="2812">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_caron" value="439">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ccaron" value="488">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ccedilla" value="231">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ccircumflex" value="742">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_cedilla" value="184">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_cent" value="162">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_checkerboard" value="2529">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_checkmark" value="2803">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_circle" value="3023">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_club" value="2796">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_colon" value="58">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_comma" value="44">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_containsas" value="16785931">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_copyright" value="169">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_cr" value="2532">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_crossinglines" value="2542">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_cuberoot" value="16785947">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_currency" value="164">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_cursor" value="2815">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_d" value="100">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dabovedot" value="16784907">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dagger" value="2801">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dcaron" value="495">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_A" value="65153">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_E" value="65155">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_I" value="65157">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_O" value="65159">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_U" value="65161">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_a" value="65152">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_abovecomma" value="65124">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_abovedot" value="65110">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_abovereversedcomma" value="65125">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_abovering" value="65112">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_acute" value="65105">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_belowbreve" value="65131">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_belowcircumflex" value="65129">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_belowcomma" value="65134">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_belowdiaeresis" value="65132">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_belowdot" value="65120">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_belowmacron" value="65128">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_belowring" value="65127">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_belowtilde" value="65130">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_breve" value="65109">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_capital_schwa" value="65163">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_caron" value="65114">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_cedilla" value="65115">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_circumflex" value="65106">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_currency" value="65135">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_dasia" value="65125">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_diaeresis" value="65111">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_doubleacute" value="65113">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_doublegrave" value="65126">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_e" value="65154">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_grave" value="65104">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_hook" value="65121">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_horn" value="65122">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_i" value="65156">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_invertedbreve" value="65133">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_iota" value="65117">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_macron" value="65108">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_o" value="65158">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_ogonek" value="65116">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_perispomeni" value="65107">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_psili" value="65124">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_semivoiced_sound" value="65119">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_small_schwa" value="65162">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_stroke" value="65123">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_tilde" value="65107">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_u" value="65160">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dead_voiced_sound" value="65118">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_decimalpoint" value="2749">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_degree" value="176">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_diaeresis" value="168">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_diamond" value="2797">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_digitspace" value="2725">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dintegral" value="16785964">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_division" value="247">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dollar" value="36">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_doubbaselinedot" value="2735">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_doubleacute" value="445">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_doubledagger" value="2802">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_doublelowquotemark" value="2814">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_downarrow" value="2302">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_downcaret" value="2984">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_downshoe" value="3030">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_downstile" value="3012">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_downtack" value="3010">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_dstroke" value="496">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_e" value="101">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_eabovedot" value="1004">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_eacute" value="233">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ebelowdot" value="16785081">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ecaron" value="492">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ecircumflex" value="234">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ecircumflexacute" value="16785087">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ecircumflexbelowdot" value="16785095">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ecircumflexgrave" value="16785089">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ecircumflexhook" value="16785091">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ecircumflextilde" value="16785093">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ediaeresis" value="235">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_egrave" value="232">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ehook" value="16785083">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_eightsubscript" value="16785544">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_eightsuperior" value="16785528">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_elementof" value="16785928">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ellipsis" value="2734">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_em3space" value="2723">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_em4space" value="2724">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_emacron" value="954">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_emdash" value="2729">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_emfilledcircle" value="2782">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_emfilledrect" value="2783">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_emopencircle" value="2766">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_emopenrectangle" value="2767">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_emptyset" value="16785925">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_emspace" value="2721">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_endash" value="2730">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_enfilledcircbullet" value="2790">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_enfilledsqbullet" value="2791">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_eng" value="959">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_enopencircbullet" value="2784">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_enopensquarebullet" value="2785">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_enspace" value="2722">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_eogonek" value="490">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_equal" value="61">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_eth" value="240">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_etilde" value="16785085">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_exclam" value="33">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_exclamdown" value="161">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_f" value="102">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_fabovedot" value="16784927">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_femalesymbol" value="2808">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ff" value="2531">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_figdash" value="2747">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_filledlefttribullet" value="2780">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_filledrectbullet" value="2779">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_filledrighttribullet" value="2781">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_filledtribulletdown" value="2793">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_filledtribulletup" value="2792">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_fiveeighths" value="2757">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_fivesixths" value="2743">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_fivesubscript" value="16785541">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_fivesuperior" value="16785525">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_fourfifths" value="2741">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_foursubscript" value="16785540">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_foursuperior" value="16785524">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_fourthroot" value="16785948">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_function" value="2294">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_g" value="103">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_gabovedot" value="757">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_gbreve" value="699">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_gcaron" value="16777703">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_gcedilla" value="955">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_gcircumflex" value="760">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_grave" value="96">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_greater" value="62">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_greaterthanequal" value="2238">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_guillemotleft" value="171">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_guillemotright" value="187">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_h" value="104">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hairspace" value="2728">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hcircumflex" value="694">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_heart" value="2798">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_aleph" value="3296">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_ayin" value="3314">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_bet" value="3297">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_beth" value="3297">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_chet" value="3303">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_dalet" value="3299">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_daleth" value="3299">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_doublelowline" value="3295">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_finalkaph" value="3306">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_finalmem" value="3309">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_finalnun" value="3311">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_finalpe" value="3315">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_finalzade" value="3317">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_finalzadi" value="3317">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_gimel" value="3298">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_gimmel" value="3298">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_he" value="3300">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_het" value="3303">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_kaph" value="3307">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_kuf" value="3319">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_lamed" value="3308">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_mem" value="3310">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_nun" value="3312">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_pe" value="3316">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_qoph" value="3319">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_resh" value="3320">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_samech" value="3313">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_samekh" value="3313">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_shin" value="3321">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_taf" value="3322">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_taw" value="3322">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_tet" value="3304">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_teth" value="3304">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_waw" value="3301">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_yod" value="3305">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_zade" value="3318">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_zadi" value="3318">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_zain" value="3302">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hebrew_zayin" value="3302">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hexagram" value="2778">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_horizconnector" value="2211">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_horizlinescan1" value="2543">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_horizlinescan3" value="2544">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_horizlinescan5" value="2545">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_horizlinescan7" value="2546">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_horizlinescan9" value="2547">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hstroke" value="689">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ht" value="2530">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_hyphen" value="173">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_i" value="105">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_iTouch" value="269025120">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_iacute" value="237">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ibelowdot" value="16785099">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ibreve" value="16777517">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_icircumflex" value="238">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_identical" value="2255">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_idiaeresis" value="239">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_idotless" value="697">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ifonlyif" value="2253">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_igrave" value="236">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ihook" value="16785097">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_imacron" value="1007">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_implies" value="2254">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_includedin" value="2266">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_includes" value="2267">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_infinity" value="2242">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_integral" value="2239">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_intersection" value="2268">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_iogonek" value="999">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_itilde" value="949">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_j" value="106">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_jcircumflex" value="700">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_jot" value="3018">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_k" value="107">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_A" value="1201">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_CHI" value="1217">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_E" value="1204">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_FU" value="1228">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_HA" value="1226">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_HE" value="1229">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_HI" value="1227">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_HO" value="1230">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_HU" value="1228">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_I" value="1202">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_KA" value="1206">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_KE" value="1209">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_KI" value="1207">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_KO" value="1210">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_KU" value="1208">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_MA" value="1231">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_ME" value="1234">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_MI" value="1232">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_MO" value="1235">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_MU" value="1233">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_N" value="1245">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_NA" value="1221">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_NE" value="1224">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_NI" value="1222">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_NO" value="1225">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_NU" value="1223">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_O" value="1205">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_RA" value="1239">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_RE" value="1242">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_RI" value="1240">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_RO" value="1243">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_RU" value="1241">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_SA" value="1211">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_SE" value="1214">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_SHI" value="1212">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_SO" value="1215">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_SU" value="1213">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_TA" value="1216">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_TE" value="1219">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_TI" value="1217">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_TO" value="1220">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_TSU" value="1218">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_TU" value="1218">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_U" value="1203">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_WA" value="1244">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_WO" value="1190">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_YA" value="1236">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_YO" value="1238">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_YU" value="1237">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_a" value="1191">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_closingbracket" value="1187">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_comma" value="1188">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_conjunctive" value="1189">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_e" value="1194">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_fullstop" value="1185">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_i" value="1192">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_middledot" value="1189">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_o" value="1195">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_openingbracket" value="1186">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_switch" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_tsu" value="1199">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_tu" value="1199">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_u" value="1193">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_ya" value="1196">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_yo" value="1198">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kana_yu" value="1197">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kappa" value="930">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kcedilla" value="1011">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_kra" value="930">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_l" value="108">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_lacute" value="485">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_latincross" value="2777">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_lbelowdot" value="16784951">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_lcaron" value="437">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_lcedilla" value="950">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_leftanglebracket" value="2748">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_leftarrow" value="2299">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_leftcaret" value="2979">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_leftdoublequotemark" value="2770">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_leftmiddlecurlybrace" value="2223">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_leftopentriangle" value="2764">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_leftpointer" value="2794">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_leftradical" value="2209">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_leftshoe" value="3034">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_leftsinglequotemark" value="2768">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_leftt" value="2548">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_lefttack" value="3036">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_less" value="60">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_lessthanequal" value="2236">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_lf" value="2533">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_logicaland" value="2270">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_logicalor" value="2271">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_lowleftcorner" value="2541">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_lowrightcorner" value="2538">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_lstroke" value="435">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_m" value="109">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_mabovedot" value="16784961">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_macron" value="175">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_malesymbol" value="2807">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_maltesecross" value="2800">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_marker" value="2751">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_masculine" value="186">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_minus" value="45">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_minutes" value="2774">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_mu" value="181">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_multiply" value="215">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_musicalflat" value="2806">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_musicalsharp" value="2805">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_n" value="110">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_nabla" value="2245">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_nacute" value="497">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ncaron" value="498">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ncedilla" value="1009">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ninesubscript" value="16785545">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ninesuperior" value="16785529">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_nl" value="2536">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_nobreakspace" value="160">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_notapproxeq" value="16785991">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_notelementof" value="16785929">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_notequal" value="2237">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_notidentical" value="16786018">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_notsign" value="172">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ntilde" value="241">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_numbersign" value="35">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_numerosign" value="1712">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_o" value="111">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_oacute" value="243">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_obarred" value="16777845">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_obelowdot" value="16785101">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ocaron" value="16777682">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ocircumflex" value="244">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ocircumflexacute" value="16785105">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ocircumflexbelowdot" value="16785113">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ocircumflexgrave" value="16785107">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ocircumflexhook" value="16785109">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ocircumflextilde" value="16785111">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_odiaeresis" value="246">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_odoubleacute" value="501">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_oe" value="5053">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ogonek" value="434">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ograve" value="242">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ohook" value="16785103">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ohorn" value="16777633">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ohornacute" value="16785115">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ohornbelowdot" value="16785123">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ohorngrave" value="16785117">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ohornhook" value="16785119">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ohorntilde" value="16785121">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_omacron" value="1010">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_oneeighth" value="2755">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_onefifth" value="2738">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_onehalf" value="189">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_onequarter" value="188">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_onesixth" value="2742">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_onesubscript" value="16785537">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_onesuperior" value="185">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_onethird" value="2736">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ooblique" value="248">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_openrectbullet" value="2786">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_openstar" value="2789">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_opentribulletdown" value="2788">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_opentribulletup" value="2787">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ordfeminine" value="170">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_oslash" value="248">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_otilde" value="245">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_overbar" value="3008">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_overline" value="1150">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_p" value="112">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_pabovedot" value="16784983">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_paragraph" value="182">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_parenleft" value="40">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_parenright" value="41">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_partdifferential" value="16785922">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_partialderivative" value="2287">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_percent" value="37">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_period" value="46">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_periodcentered" value="183">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_phonographcopyright" value="2811">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_plus" value="43">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_plusminus" value="177">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_prescription" value="2772">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_prolongedsound" value="1200">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_punctspace" value="2726">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_q" value="113">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_quad" value="3020">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_question" value="63">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_questiondown" value="191">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_quotedbl" value="34">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_quoteleft" value="96">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_quoteright" value="39">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_r" value="114">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_racute" value="480">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_radical" value="2262">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rcaron" value="504">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rcedilla" value="947">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_registered" value="174">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rightanglebracket" value="2750">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rightarrow" value="2301">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rightcaret" value="2982">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rightdoublequotemark" value="2771">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rightmiddlecurlybrace" value="2224">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rightmiddlesummation" value="2231">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rightopentriangle" value="2765">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rightpointer" value="2795">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rightshoe" value="3032">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rightsinglequotemark" value="2769">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_rightt" value="2549">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_righttack" value="3068">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_s" value="115">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_sabovedot" value="16784993">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_sacute" value="438">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_scaron" value="441">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_scedilla" value="442">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_schwa" value="16777817">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_scircumflex" value="766">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_script_switch" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_seconds" value="2775">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_section" value="167">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_semicolon" value="59">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_semivoicedsound" value="1247">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_seveneighths" value="2758">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_sevensubscript" value="16785543">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_sevensuperior" value="16785527">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_signaturemark" value="2762">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_signifblank" value="2732">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_similarequal" value="2249">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_singlelowquotemark" value="2813">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_sixsubscript" value="16785542">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_sixsuperior" value="16785526">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_slash" value="47">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_soliddiamond" value="2528">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_space" value="32">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_squareroot" value="16785946">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ssharp" value="223">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_sterling" value="163">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_stricteq" value="16786019">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_t" value="116">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_tabovedot" value="16785003">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_tcaron" value="443">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_tcedilla" value="510">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_telephone" value="2809">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_telephonerecorder" value="2810">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_therefore" value="2240">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_thinspace" value="2727">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_thorn" value="254">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_threeeighths" value="2756">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_threefifths" value="2740">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_threequarters" value="190">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_threesubscript" value="16785539">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_threesuperior" value="179">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_tintegral" value="16785965">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_topintegral" value="2212">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_topleftparens" value="2219">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_topleftradical" value="2210">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_topleftsqbracket" value="2215">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_topleftsummation" value="2225">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_toprightparens" value="2221">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_toprightsqbracket" value="2217">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_toprightsummation" value="2229">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_topt" value="2551">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_topvertsummationconnector" value="2227">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_trademark" value="2761">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_trademarkincircle" value="2763">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_tslash" value="956">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_twofifths" value="2739">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_twosubscript" value="16785538">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_twosuperior" value="178">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_twothirds" value="2737">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_u" value="117">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uacute" value="250">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ubelowdot" value="16785125">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ubreve" value="765">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ucircumflex" value="251">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_udiaeresis" value="252">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_udoubleacute" value="507">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ugrave" value="249">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uhook" value="16785127">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uhorn" value="16777648">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uhornacute" value="16785129">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uhornbelowdot" value="16785137">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uhorngrave" value="16785131">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uhornhook" value="16785133">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uhorntilde" value="16785135">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_umacron" value="1022">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_underbar" value="3014">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_underscore" value="95">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_union" value="2269">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uogonek" value="1017">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uparrow" value="2300">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_upcaret" value="2985">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_upleftcorner" value="2540">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uprightcorner" value="2539">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_upshoe" value="3011">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_upstile" value="3027">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uptack" value="3022">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_uring" value="505">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_utilde" value="1021">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_v" value="118">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_variation" value="2241">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_vertbar" value="2552">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_vertconnector" value="2214">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_voicedsound" value="1246">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_vt" value="2537">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_w" value="119">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_wacute" value="16785027">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_wcircumflex" value="16777589">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_wdiaeresis" value="16785029">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_wgrave" value="16785025">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_x" value="120">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_xabovedot" value="16785035">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_y" value="121">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_yacute" value="253">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ybelowdot" value="16785141">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ycircumflex" value="16777591">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ydiaeresis" value="255">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_yen" value="165">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ygrave" value="16785139">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_yhook" value="16785143">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_ytilde" value="16785145">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_z" value="122">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_zabovedot" value="447">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_zacute" value="444">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_zcaron" value="446">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_zerosubscript" value="16785536">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_zerosuperior" value="16785520">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KEY_zstroke" value="16777654">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_0" value="65456">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_1" value="65457">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_2" value="65458">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_3" value="65459">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_4" value="65460">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_5" value="65461">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_6" value="65462">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_7" value="65463">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_8" value="65464">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_9" value="65465">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Add" value="65451">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Begin" value="65437">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Decimal" value="65454">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Delete" value="65439">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Divide" value="65455">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Down" value="65433">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_End" value="65436">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Enter" value="65421">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Equal" value="65469">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_F1" value="65425">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_F2" value="65426">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_F3" value="65427">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_F4" value="65428">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Home" value="65429">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Insert" value="65438">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Left" value="65430">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Multiply" value="65450">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Next" value="65435">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Page_Down" value="65435">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Page_Up" value="65434">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Prior" value="65434">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Right" value="65432">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Separator" value="65452">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Space" value="65408">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Subtract" value="65453">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Tab" value="65417">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KP_Up" value="65431">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Kana_Lock" value="65325">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Kana_Shift" value="65326">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Kanji" value="65313">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Kanji_Bangou" value="65335">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Katakana" value="65318">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KbdBrightnessDown" value="269025030">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KbdBrightnessUp" value="269025029">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="KbdLightOnOff" value="269025028">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Kcedilla" value="979">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="KeyEvent" c:type="ClutterKeyEvent" version="0.2">
+      <doc xml:whitespace="preserve">Key event</doc>
+      <field name="type" writable="1">
+        <type name="EventType" c:type="ClutterEventType"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="EventFlags" c:type="ClutterEventFlags"/>
+      </field>
+      <field name="stage" writable="1">
+        <type name="Stage" c:type="ClutterStage*"/>
+      </field>
+      <field name="source" writable="1">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </field>
+      <field name="modifier_state" writable="1">
+        <type name="ModifierType" c:type="ClutterModifierType"/>
+      </field>
+      <field name="keyval" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="hardware_keycode" writable="1">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <field name="unicode_value" writable="1">
+        <type name="gunichar" c:type="gunichar"/>
+      </field>
+      <field name="device" writable="1">
+        <type name="InputDevice" c:type="ClutterInputDevice*"/>
+      </field>
+    </record>
+    <record name="Knot"
+            c:type="ClutterKnot"
+            version="0.2"
+            glib:type-name="ClutterKnot"
+            glib:get-type="clutter_knot_get_type"
+            c:symbol-prefix="knot">
+      <doc xml:whitespace="preserve">Point in a path behaviour.</doc>
+      <field name="x" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <method name="copy" c:identifier="clutter_knot_copy" version="0.2">
+        <doc xml:whitespace="preserve">Makes an allocated copy of a knot.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the copied knot.</doc>
+          <type name="Knot" c:type="ClutterKnot*"/>
+        </return-value>
+      </method>
+      <method name="equal" c:identifier="clutter_knot_equal" version="0.2">
+        <doc xml:whitespace="preserve">Compares to knot and checks if the point to the same location.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the knots point to the same location.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="knot_b" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Second knot</doc>
+            <type name="Knot" c:type="ClutterKnot*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free" c:identifier="clutter_knot_free" version="0.2">
+        <doc xml:whitespace="preserve">Frees the memory of an allocated knot.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <constant name="Korean_Won" value="3839">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="L" value="76">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="L1" value="65480">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="L10" value="65489">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="L2" value="65481">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="L3" value="65482">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="L4" value="65483">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="L5" value="65484">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="L6" value="65485">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="L7" value="65486">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="L8" value="65487">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="L9" value="65488">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Lacute" value="453">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Last_Virtual_Screen" value="65236">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Launch0" value="269025088">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Launch1" value="269025089">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Launch2" value="269025090">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Launch3" value="269025091">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Launch4" value="269025092">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Launch5" value="269025093">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Launch6" value="269025094">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Launch7" value="269025095">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Launch8" value="269025096">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Launch9" value="269025097">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="LaunchA" value="269025098">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="LaunchB" value="269025099">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="LaunchC" value="269025100">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="LaunchD" value="269025101">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="LaunchE" value="269025102">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="LaunchF" value="269025103">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="LayoutManager"
+           c:symbol-prefix="layout_manager"
+           c:type="ClutterLayoutManager"
+           version="1.2"
+           parent="GObject.InitiallyUnowned"
+           abstract="1"
+           glib:type-name="ClutterLayoutManager"
+           glib:get-type="clutter_layout_manager_get_type"
+           glib:type-struct="LayoutManagerClass">
+      <doc xml:whitespace="preserve">The #ClutterLayoutManager structure contains only private data
+and should be accessed using the provided API</doc>
+      <virtual-method name="allocate" invoker="allocate" version="1.2">
+        <doc xml:whitespace="preserve">Allocates the children of @container given an area
+See also clutter_actor_allocate()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterContainer using @manager</doc>
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="allocation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterActorBox containing the allocated area of @container</doc>
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the allocation flags</doc>
+            <type name="AllocationFlags" c:type="ClutterAllocationFlags"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="begin_animation"
+                      invoker="begin_animation"
+                      version="1.2">
+        <doc xml:whitespace="preserve">Begins an animation of @duration milliseconds, using the provided
+easing @mode
+The easing mode can be specified either as a #ClutterAnimationMode
+or as a logical id returned by clutter_alpha_register_func()
+The result of this function depends on the @manager implementation
+layout manager; the returned instance is owned by the layout
+manager and should not be unreferenced</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #ClutterAlpha created by the</doc>
+          <type name="Alpha" c:type="ClutterAlpha*"/>
+        </return-value>
+        <parameters>
+          <parameter name="duration" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the duration of the animation, in milliseconds</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the easing mode of the animation</doc>
+            <type name="gulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="create_child_meta" introspectable="0">
+        <return-value>
+          <type name="LayoutMeta" c:type="ClutterLayoutMeta*"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="actor" transfer-ownership="none">
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="end_animation"
+                      invoker="end_animation"
+                      version="1.2">
+        <doc xml:whitespace="preserve">Ends an animation started by clutter_layout_manager_begin_animation()
+The result of this call depends on the @manager implementation</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_animation_progress"
+                      invoker="get_animation_progress"
+                      version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the progress of the animation, if one has been started by
+clutter_layout_manager_begin_animation()
+The returned value has the same semantics of the #ClutterAlpha:alpha
+value</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the progress of the animation</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_child_meta_type">
+        <return-value transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_preferred_height"
+                      invoker="get_preferred_height"
+                      version="1.2">
+        <doc xml:whitespace="preserve">Computes the minimum and natural heights of the @container according
+to @manager.
+See also clutter_actor_get_preferred_height()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterContainer using @manager</doc>
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="for_width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the width for which the height should be computed, or -1</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="min_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the minimum height of the layout, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="nat_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the natural height of the layout, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_preferred_width"
+                      invoker="get_preferred_width"
+                      version="1.2">
+        <doc xml:whitespace="preserve">Computes the minimum and natural widths of the @container according
+to @manager.
+See also clutter_actor_get_preferred_width()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterContainer using @manager</doc>
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="for_height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the height for which the width should be computed, or -1</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="min_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the minimum width of the layout, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="nat_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the natural width of the layout, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="layout_changed"
+                      invoker="layout_changed"
+                      version="1.2">
+        <doc xml:whitespace="preserve">Emits the #ClutterLayoutManager::layout-changed signal on @manager
+This function should only be called by implementations of the
+#ClutterLayoutManager class</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_container"
+                      invoker="set_container"
+                      version="1.2">
+        <doc xml:whitespace="preserve">If the #ClutterLayoutManager sub-class allows it, allow
+adding a weak reference of the @container using @manager
+from within the layout manager
+The layout manager should not increase the reference
+count of the @container</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterContainer using @manager</doc>
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="allocate"
+              c:identifier="clutter_layout_manager_allocate"
+              version="1.2">
+        <doc xml:whitespace="preserve">Allocates the children of @container given an area
+See also clutter_actor_allocate()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterContainer using @manager</doc>
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="allocation" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterActorBox containing the allocated area of @container</doc>
+            <type name="ActorBox" c:type="ClutterActorBox*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the allocation flags</doc>
+            <type name="AllocationFlags" c:type="ClutterAllocationFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="begin_animation"
+              c:identifier="clutter_layout_manager_begin_animation"
+              version="1.2">
+        <doc xml:whitespace="preserve">Begins an animation of @duration milliseconds, using the provided
+easing @mode
+The easing mode can be specified either as a #ClutterAnimationMode
+or as a logical id returned by clutter_alpha_register_func()
+The result of this function depends on the @manager implementation
+layout manager; the returned instance is owned by the layout
+manager and should not be unreferenced</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #ClutterAlpha created by the</doc>
+          <type name="Alpha" c:type="ClutterAlpha*"/>
+        </return-value>
+        <parameters>
+          <parameter name="duration" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the duration of the animation, in milliseconds</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the easing mode of the animation</doc>
+            <type name="gulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_get"
+              c:identifier="clutter_layout_manager_child_get"
+              version="1.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Retrieves the values for a list of properties out of the
+#ClutterLayoutMeta created by @manager and attached to the
+child of a @container</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterContainer using @manager</doc>
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @container</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="first_property" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the first property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_get_property"
+              c:identifier="clutter_layout_manager_child_get_property"
+              version="1.2">
+        <doc xml:whitespace="preserve">Gets a property on the #ClutterLayoutMeta created by @manager and
+attached to a child of @container
+The #GValue must already be initialized to the type of the property
+and has to be unset with g_value_unset() after extracting the real
+value out of it</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterContainer using @manager</doc>
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @container</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property to get</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue with the value of the property to get</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_set"
+              c:identifier="clutter_layout_manager_child_set"
+              version="1.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets a list of properties and their values on the #ClutterLayoutMeta
+associated by @manager to a child of @container
+Languages bindings should use clutter_layout_manager_child_set_property()
+instead</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterContainer using @manager</doc>
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @container</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="first_property" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the first property name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_set_property"
+              c:identifier="clutter_layout_manager_child_set_property"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets a property on the #ClutterLayoutMeta created by @manager and
+attached to a child of @container</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterContainer using @manager</doc>
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @container</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue with the value of the property to set</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="end_animation"
+              c:identifier="clutter_layout_manager_end_animation"
+              version="1.2">
+        <doc xml:whitespace="preserve">Ends an animation started by clutter_layout_manager_begin_animation()
+The result of this call depends on the @manager implementation</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="find_child_property"
+              c:identifier="clutter_layout_manager_find_child_property"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the #GParamSpec for the layout property @name inside
+the #ClutterLayoutMeta sub-class used by @manager
+or %NULL if no property with that name exists. The returned
+#GParamSpec is owned by the layout manager and should not be
+modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GParamSpec describing the property,</doc>
+          <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_animation_progress"
+              c:identifier="clutter_layout_manager_get_animation_progress"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the progress of the animation, if one has been started by
+clutter_layout_manager_begin_animation()
+The returned value has the same semantics of the #ClutterAlpha:alpha
+value</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the progress of the animation</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_child_meta"
+              c:identifier="clutter_layout_manager_get_child_meta"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterLayoutMeta that the layout @manager associated
+to the @actor child of @container, eventually by creating one if the
+#ClutterLayoutManager supports layout properties
+#ClutterLayoutManager does not have layout properties. The returned
+layout meta instance is owned by the #ClutterLayoutManager and it
+should not be unreferenced</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterLayoutMeta, or %NULL if the</doc>
+          <type name="LayoutMeta" c:type="ClutterLayoutMeta*"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterContainer using @manager</doc>
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @container</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_preferred_height"
+              c:identifier="clutter_layout_manager_get_preferred_height"
+              version="1.2">
+        <doc xml:whitespace="preserve">Computes the minimum and natural heights of the @container according
+to @manager.
+See also clutter_actor_get_preferred_height()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterContainer using @manager</doc>
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="for_width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the width for which the height should be computed, or -1</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="min_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the minimum height of the layout, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="nat_height_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the natural height of the layout, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_preferred_width"
+              c:identifier="clutter_layout_manager_get_preferred_width"
+              version="1.2">
+        <doc xml:whitespace="preserve">Computes the minimum and natural widths of the @container according
+to @manager.
+See also clutter_actor_get_preferred_width()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterContainer using @manager</doc>
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+          <parameter name="for_height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the height for which the width should be computed, or -1</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="min_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the minimum width of the layout, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="nat_width_p"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for the natural width of the layout, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="layout_changed"
+              c:identifier="clutter_layout_manager_layout_changed"
+              version="1.2">
+        <doc xml:whitespace="preserve">Emits the #ClutterLayoutManager::layout-changed signal on @manager
+This function should only be called by implementations of the
+#ClutterLayoutManager class</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="list_child_properties"
+              c:identifier="clutter_layout_manager_list_child_properties"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves all the #GParamSpec&lt;!-- --&gt;s for the layout properties
+stored inside the #ClutterLayoutMeta sub-class used by @manager
+%NULL-terminated array of #GParamSpec&lt;!-- --&gt;s. Use g_free() to free the
+resources allocated for the array</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly-allocated,</doc>
+          <array length="0" c:type="GParamSpec**">
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="n_pspecs"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the number of returned #GParamSpec&lt;!-- --&gt;s</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_container"
+              c:identifier="clutter_layout_manager_set_container"
+              version="1.2">
+        <doc xml:whitespace="preserve">If the #ClutterLayoutManager sub-class allows it, allow
+adding a weak reference of the @container using @manager
+from within the layout manager
+The layout manager should not increase the reference
+count of the @container</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterContainer using @manager</doc>
+            <type name="Container" c:type="ClutterContainer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="GObject.InitiallyUnowned" c:type="GInitiallyUnowned"/>
+      </field>
+      <field name="dummy" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <glib:signal name="layout-changed" version="1.2">
+        <doc xml:whitespace="preserve">The ::layout-changed signal is emitted each time a layout manager
+has been changed. Every #ClutterActor using the @manager instance
+as a layout manager should connect a handler to the ::layout-changed
+signal and queue a relayout on themselves:
+|[
+static void layout_changed (ClutterLayoutManager *manager,
+ClutterActor         *self)
+{
+clutter_actor_queue_relayout (self);
+}
+...
+self-&gt;manager = g_object_ref_sink (manager);
+g_signal_connect (self-&gt;manager, "layout-changed",
+G_CALLBACK (layout_changed),
+self);
+]|
+Sub-classes of #ClutterLayoutManager that implement a layout that
+can be controlled or changed using parameters should emit the
+::layout-changed signal whenever one of the parameters changes,
+by using clutter_layout_manager_layout_changed().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="LayoutManagerClass"
+            c:type="ClutterLayoutManagerClass"
+            glib:is-gtype-struct-for="LayoutManager"
+            version="1.2">
+      <doc xml:whitespace="preserve">The #ClutterLayoutManagerClass structure contains only private
+data and should be accessed using the provided API</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="GObject.InitiallyUnownedClass"
+              c:type="GInitiallyUnownedClass"/>
+      </field>
+      <field name="get_preferred_width">
+        <callback name="get_preferred_width">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+            <parameter name="container" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the #ClutterContainer using @manager</doc>
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="for_height" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the height for which the width should be computed, or -1</doc>
+              <type name="gfloat" c:type="gfloat"/>
+            </parameter>
+            <parameter name="min_width_p"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">return location for the minimum width of the layout, or %NULL</doc>
+              <type name="gfloat" c:type="gfloat*"/>
+            </parameter>
+            <parameter name="nat_width_p"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">return location for the natural width of the layout, or %NULL</doc>
+              <type name="gfloat" c:type="gfloat*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_preferred_height">
+        <callback name="get_preferred_height">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+            <parameter name="container" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the #ClutterContainer using @manager</doc>
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="for_width" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the width for which the height should be computed, or -1</doc>
+              <type name="gfloat" c:type="gfloat"/>
+            </parameter>
+            <parameter name="min_height_p"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">return location for the minimum height of the layout, or %NULL</doc>
+              <type name="gfloat" c:type="gfloat*"/>
+            </parameter>
+            <parameter name="nat_height_p"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">return location for the natural height of the layout, or %NULL</doc>
+              <type name="gfloat" c:type="gfloat*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="allocate">
+        <callback name="allocate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+            <parameter name="container" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the #ClutterContainer using @manager</doc>
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="allocation" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the #ClutterActorBox containing the allocated area of @container</doc>
+              <type name="ActorBox" c:type="ClutterActorBox*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the allocation flags</doc>
+              <type name="AllocationFlags" c:type="ClutterAllocationFlags"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_container">
+        <callback name="set_container">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+            <parameter name="container"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">a #ClutterContainer using @manager</doc>
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_child_meta_type">
+        <callback name="get_child_meta_type">
+          <return-value transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="create_child_meta" introspectable="0">
+        <callback name="create_child_meta" introspectable="0">
+          <return-value>
+            <type name="LayoutMeta" c:type="ClutterLayoutMeta*"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Container" c:type="ClutterContainer*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Actor" c:type="ClutterActor*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="begin_animation">
+        <callback name="begin_animation">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #ClutterAlpha created by the</doc>
+            <type name="Alpha" c:type="ClutterAlpha*"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+            <parameter name="duration" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the duration of the animation, in milliseconds</doc>
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="mode" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the easing mode of the animation</doc>
+              <type name="gulong" c:type="gulong"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_animation_progress">
+        <callback name="get_animation_progress">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the progress of the animation</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="end_animation">
+        <callback name="end_animation">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="layout_changed">
+        <callback name="layout_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="manager" transfer-ownership="none">
+              <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_padding_1" introspectable="0">
+        <callback name="_clutter_padding_1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_padding_2" introspectable="0">
+        <callback name="_clutter_padding_2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_padding_3" introspectable="0">
+        <callback name="_clutter_padding_3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_padding_4" introspectable="0">
+        <callback name="_clutter_padding_4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_padding_5" introspectable="0">
+        <callback name="_clutter_padding_5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_padding_6" introspectable="0">
+        <callback name="_clutter_padding_6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_padding_7" introspectable="0">
+        <callback name="_clutter_padding_7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_padding_8" introspectable="0">
+        <callback name="_clutter_padding_8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="LayoutMeta"
+           c:symbol-prefix="layout_meta"
+           c:type="ClutterLayoutMeta"
+           version="1.2"
+           parent="ChildMeta"
+           abstract="1"
+           glib:type-name="ClutterLayoutMeta"
+           glib:get-type="clutter_layout_meta_get_type"
+           glib:type-struct="LayoutMetaClass">
+      <doc xml:whitespace="preserve">Sub-class of #ClutterChildMeta specific for layout managers
+A #ClutterLayoutManager sub-class should create a #ClutterLayoutMeta
+instance by overriding the #ClutterLayoutManager::create_child_meta()
+virtual function</doc>
+      <method name="get_manager"
+              c:identifier="clutter_layout_meta_get_manager"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the actor wrapped by @data</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterLayoutManager</doc>
+          <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+        </return-value>
+      </method>
+      <property name="manager"
+                version="1.2"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #ClutterLayoutManager that created this #ClutterLayoutMeta.</doc>
+        <type name="LayoutManager"/>
+      </property>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="ChildMeta" c:type="ClutterChildMeta"/>
+      </field>
+      <field name="manager">
+        <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+      </field>
+      <field name="dummy0" readable="0" private="1">
+        <type name="gint32" c:type="gint32"/>
+      </field>
+      <field name="dummy1" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+    </class>
+    <record name="LayoutMetaClass"
+            c:type="ClutterLayoutMetaClass"
+            glib:is-gtype-struct-for="LayoutMeta"
+            version="1.2">
+      <doc xml:whitespace="preserve">The #ClutterLayoutMetaClass contains only private data and
+should never be accessed directly</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="ChildMetaClass" c:type="ClutterChildMetaClass"/>
+      </field>
+      <field name="_clutter_padding1" introspectable="0">
+        <callback name="_clutter_padding1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_padding2" introspectable="0">
+        <callback name="_clutter_padding2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_padding3" introspectable="0">
+        <callback name="_clutter_padding3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_padding4" introspectable="0">
+        <callback name="_clutter_padding4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <constant name="Lbelowdot" value="16784950">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Lcaron" value="421">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Lcedilla" value="934">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Left" value="65361">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="LightBulb" value="269025077">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Linefeed" value="65290">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="LiraSign" value="16785572">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="ListModel"
+           c:symbol-prefix="list_model"
+           c:type="ClutterListModel"
+           version="0.6"
+           parent="Model"
+           glib:type-name="ClutterListModel"
+           glib:get-type="clutter_list_model_get_type"
+           glib:type-struct="ListModelClass">
+      <doc xml:whitespace="preserve">The #ClutterListModel struct contains only private data.</doc>
+      <implements name="Scriptable"/>
+      <constructor name="new"
+                   c:identifier="clutter_list_model_new"
+                   version="0.6"
+                   introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new default model with @n_columns columns with the types 
+and names passed in.
+For example:
+&lt;informalexample&gt;&lt;programlisting&gt;
+model = clutter_list_model_new (3,
+G_TYPE_INT,      "Score",
+G_TYPE_STRING,   "Team",
+GDK_TYPE_PIXBUF, "Logo");
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+will create a new #ClutterModel with three columns of type int,
+string and #GdkPixbuf respectively.
+Note that the name of the column can be set to %NULL, in which case
+the canonical name of the type held by the column will be used as
+the title.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #ClutterListModel</doc>
+          <type name="Model" c:type="ClutterModel*"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of columns in the model</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="newv"
+                c:identifier="clutter_list_model_newv"
+                version="0.6">
+        <doc xml:whitespace="preserve">Non-vararg version of clutter_list_model_new(). This function is
+useful for language bindings.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new default #ClutterModel</doc>
+          <type name="Model" c:type="ClutterModel*"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of columns in the model</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="types" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of #GType types for the columns, from first to last</doc>
+            <type name="GType" c:type="GType*"/>
+          </parameter>
+          <parameter name="names" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of names for the columns, from first to last</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="Model" c:type="ClutterModel"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="ListModelPrivate" c:type="ClutterListModelPrivate*"/>
+      </field>
+    </class>
+    <record name="ListModelClass"
+            c:type="ClutterListModelClass"
+            glib:is-gtype-struct-for="ListModel"
+            version="0.6">
+      <doc xml:whitespace="preserve">The #ClutterListModelClass struct contains only private data.</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="ModelClass" c:type="ClutterModelClass"/>
+      </field>
+    </record>
+    <record name="ListModelPrivate"
+            c:type="ClutterListModelPrivate"
+            disguised="1">
+    </record>
+    <constant name="LogOff" value="269025121">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Lstroke" value="419">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="M" value="77">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="MAJOR_VERSION" value="1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="MICRO_VERSION" value="14">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="MINOR_VERSION" value="6">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Mabovedot" value="16784960">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Macedonia_DSE" value="1717">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Macedonia_GJE" value="1714">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Macedonia_KJE" value="1724">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Macedonia_dse" value="1701">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Macedonia_gje" value="1698">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Macedonia_kje" value="1708">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Mae_Koho" value="65342">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Mail" value="269025049">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="MailForward" value="269025168">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Market" value="269025122">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Massyo" value="65324">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <interface name="Media"
+               c:symbol-prefix="media"
+               c:type="ClutterMedia"
+               version="0.2"
+               glib:type-name="ClutterMedia"
+               glib:get-type="clutter_media_get_type"
+               glib:type-struct="MediaIface">
+      <doc xml:whitespace="preserve">#ClutterMedia is an opaque structure whose members cannot be directly
+accessed</doc>
+      <virtual-method name="eos">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="error">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="error" transfer-ownership="none">
+            <type name="GLib.Error" c:type="GError*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_audio_volume"
+              c:identifier="clutter_media_get_audio_volume"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the playback volume of @media.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The playback volume between 0.0 and 1.0</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_buffer_fill"
+              c:identifier="clutter_media_get_buffer_fill"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the amount of the stream that is buffered.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the fill level, between 0.0 and 1.0</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_can_seek"
+              c:identifier="clutter_media_get_can_seek"
+              version="0.2">
+        <doc xml:whitespace="preserve">Retrieves whether @media is seekable or not.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @media can seek, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_duration"
+              c:identifier="clutter_media_get_duration"
+              version="0.2">
+        <doc xml:whitespace="preserve">Retrieves the duration of the media stream that @media represents.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the duration of the media stream, in seconds</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_playing"
+              c:identifier="clutter_media_get_playing"
+              version="0.2">
+        <doc xml:whitespace="preserve">Retrieves the playing status of @media.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if playing, %FALSE if stopped.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_progress"
+              c:identifier="clutter_media_get_progress"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the playback progress of @media.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the playback progress, between 0.0 and 1.0</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_subtitle_font_name"
+              c:identifier="clutter_media_get_subtitle_font_name"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the font name currently used.
+to free the returned string</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a string containing the font name. Use g_free()</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_subtitle_uri"
+              c:identifier="clutter_media_get_subtitle_uri"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the URI of the subtitle file in use.
+to free the returned string</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the URI of the subtitle file. Use g_free()</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_uri"
+              c:identifier="clutter_media_get_uri"
+              version="0.2">
+        <doc xml:whitespace="preserve">Retrieves the URI from @media.
+to free the returned string</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the URI of the media stream. Use g_free()</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_audio_volume"
+              c:identifier="clutter_media_set_audio_volume"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the playback volume of @media to @volume.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="volume" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the volume as a double between 0.0 and 1.0</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_filename"
+              c:identifier="clutter_media_set_filename"
+              version="0.2">
+        <doc xml:whitespace="preserve">Sets the source of @media using a file path.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A filename</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_playing"
+              c:identifier="clutter_media_set_playing"
+              version="0.2">
+        <doc xml:whitespace="preserve">Starts or stops playing of @media.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="playing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to start playing</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_progress"
+              c:identifier="clutter_media_set_progress"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the playback progress of @media. The @progress is
+a normalized value between 0.0 (begin) and 1.0 (end).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="progress" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the progress of the playback, between 0.0 and 1.0</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_subtitle_font_name"
+              c:identifier="clutter_media_set_subtitle_font_name"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets the font used by the subtitle renderer. The @font_name string must be
+either %NULL, which means that the default font name of the underlying
+implementation will be used; or must follow the grammar recognized by
+pango_font_description_from_string() like:
+|[
+clutter_media_set_subtitle_font_name (media, "Sans 24pt");
+]|</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a font name, or %NULL to set the default font name</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_subtitle_uri"
+              c:identifier="clutter_media_set_subtitle_uri"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets the location of a subtitle file to display while playing @media.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the URI of a subtitle file</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_uri"
+              c:identifier="clutter_media_set_uri"
+              version="0.2">
+        <doc xml:whitespace="preserve">Sets the URI of @media to @uri.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the URI of the media stream</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="audio-volume"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The volume of the audio, as a normalized value between
+0.0 and 1.0.</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="buffer-fill" version="1.0" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The fill level of the buffer for the current stream,
+as a value between 0.0 and 1.0.</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="can-seek" version="0.2" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the current stream is seekable.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="duration" version="0.2" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The duration of the current stream, in seconds</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="playing"
+                version="0.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the #ClutterMedia actor is playing.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="progress"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The current progress of the playback, as a normalized
+value between 0.0 and 1.0.</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="subtitle-font-name"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The font used to display subtitles. The font description has to
+follow the same grammar as the one recognized by
+pango_font_description_from_string().</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="subtitle-uri"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The location of a subtitle file, expressed as a valid URI.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="uri"
+                version="0.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The location of a media file, expressed as a valid URI.</doc>
+        <type name="utf8"/>
+      </property>
+      <glib:signal name="eos" version="0.2">
+        <doc xml:whitespace="preserve">The ::eos signal is emitted each time the media stream ends.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="error" version="0.2">
+        <doc xml:whitespace="preserve">The ::error signal is emitted each time an error occurred.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="error" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GError</doc>
+            <type name="GObject.Error"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </interface>
+    <record name="MediaIface"
+            c:type="ClutterMediaIface"
+            glib:is-gtype-struct-for="Media"
+            version="0.2">
+      <doc xml:whitespace="preserve">Interface vtable for #ClutterMedia implementations</doc>
+      <field name="base_iface" readable="0" private="1">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="eos">
+        <callback name="eos">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="media" transfer-ownership="none">
+              <type name="Media" c:type="ClutterMedia*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="error">
+        <callback name="error">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="media" transfer-ownership="none">
+              <type name="Media" c:type="ClutterMedia*"/>
+            </parameter>
+            <parameter name="error" transfer-ownership="none">
+              <type name="GLib.Error" c:type="GError*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <constant name="Meeting" value="269025123">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Memo" value="269025054">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Menu" value="65383">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="MenuKB" value="269025125">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="MenuPB" value="269025126">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Messenger" value="269025166">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Meta_L" value="65511">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Meta_R" value="65512">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="MillSign" value="16785573">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ModeLock" value="269025025">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Mode_switch" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Model"
+           c:symbol-prefix="model"
+           c:type="ClutterModel"
+           version="0.6"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="ClutterModel"
+           glib:get-type="clutter_model_get_type"
+           glib:type-struct="ModelClass">
+      <doc xml:whitespace="preserve">Base class for list models. The #ClutterModel structure contains
+only private data and should be manipulated using the provided
+API.</doc>
+      <implements name="Scriptable"/>
+      <virtual-method name="filter_changed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_column_name"
+                      invoker="get_column_name"
+                      version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the name of the @column
+string, and it should not be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the column. The model holds the returned</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the column number</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_column_type"
+                      invoker="get_column_type"
+                      version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the type of the @column.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type of the column.</doc>
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the column number</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_iter_at_row"
+                      invoker="get_iter_at_row"
+                      version="0.6">
+        <doc xml:whitespace="preserve">Retrieves a #ClutterModelIter representing the row at the given index.
+If a filter function has been set using clutter_model_set_filter()
+then the @model implementation will return the first non filtered
+row.
+out of bounds. When done using the iterator object, call g_object_unref()
+to deallocate its resources</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A new #ClutterModelIter, or %NULL if @row was</doc>
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position of the row to retrieve</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_n_columns"
+                      invoker="get_n_columns"
+                      version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the number of columns inside @model.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of columns</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_n_rows" invoker="get_n_rows" version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the number of rows inside @model, eventually taking
+into account any filtering function set using clutter_model_set_filter().
+the length of the filtered @model is returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The length of the @model. If there is a filter set, then</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="insert_row" introspectable="0">
+        <return-value>
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="remove_row">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="resort" introspectable="0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none" closure="1">
+            <type name="ModelSortFunc" c:type="ClutterModelSortFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="row_added">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="ModelIter" c:type="ClutterModelIter*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="row_changed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="ModelIter" c:type="ClutterModelIter*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="row_removed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="ModelIter" c:type="ClutterModelIter*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="sort_changed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <method name="append"
+              c:identifier="clutter_model_append"
+              version="0.6"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Creates and appends a new row to the #ClutterModel, setting the
+row values upon creation. For example, to append a new row where
+column 0 is type %G_TYPE_INT and column 1 is of type %G_TYPE_STRING:
+&lt;informalexample&gt;&lt;programlisting&gt;
+ClutterModel *model;
+model = clutter_model_default_new (2,
+G_TYPE_INT,    "Score",
+G_TYPE_STRING, "Team");
+clutter_model_append (model, 0, 42, 1, "Team #1", -1);
+&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="appendv"
+              c:identifier="clutter_model_appendv"
+              version="0.6">
+        <doc xml:whitespace="preserve">Creates and appends a new row to the #ClutterModel, setting the row
+values for the given @columns upon creation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of columns and values</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="columns" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a vector with the columns to set</doc>
+            <array length="0" c:type="guint*">
+              <type name="guint" c:type="guint"/>
+            </array>
+          </parameter>
+          <parameter name="values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a vector with the values</doc>
+            <array length="0" c:type="GValue*">
+              <type name="GObject.Value" c:type="GValue"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="filter_iter"
+              c:identifier="clutter_model_filter_iter"
+              version="0.6">
+        <doc xml:whitespace="preserve">Checks whether the row pointer by @iter should be filtered or not using
+the filtering function set on @model.
+This function should be used only by subclasses of #ClutterModel.
+%FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the row should be displayed,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the row to filter</doc>
+            <type name="ModelIter" c:type="ClutterModelIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="filter_row"
+              c:identifier="clutter_model_filter_row"
+              version="0.6">
+        <doc xml:whitespace="preserve">Checks whether @row should be filtered or not using the
+filtering function set on @model.
+This function should be used only by subclasses of #ClutterModel.
+%FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the row should be displayed,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the row to filter</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="foreach"
+              c:identifier="clutter_model_foreach"
+              version="0.6">
+        <doc xml:whitespace="preserve">Calls @func for each row in the model.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">a #ClutterModelForeachFunc</doc>
+            <type name="ModelForeachFunc" c:type="ClutterModelForeachFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data to pass to @func</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_column_name"
+              c:identifier="clutter_model_get_column_name"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the name of the @column
+string, and it should not be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the column. The model holds the returned</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the column number</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_column_type"
+              c:identifier="clutter_model_get_column_type"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the type of the @column.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type of the column.</doc>
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the column number</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_filter_set"
+              c:identifier="clutter_model_get_filter_set"
+              version="1.0">
+        <doc xml:whitespace="preserve">Returns whether the @model has a filter in place, set
+using clutter_model_set_filter()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if a filter is set</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_first_iter"
+              c:identifier="clutter_model_get_first_iter"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves a #ClutterModelIter representing the first non-filtered
+row in @model.
+Call g_object_unref() when done using it</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A new #ClutterModelIter.</doc>
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+      </method>
+      <method name="get_iter_at_row"
+              c:identifier="clutter_model_get_iter_at_row"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves a #ClutterModelIter representing the row at the given index.
+If a filter function has been set using clutter_model_set_filter()
+then the @model implementation will return the first non filtered
+row.
+out of bounds. When done using the iterator object, call g_object_unref()
+to deallocate its resources</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A new #ClutterModelIter, or %NULL if @row was</doc>
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position of the row to retrieve</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_last_iter"
+              c:identifier="clutter_model_get_last_iter"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves a #ClutterModelIter representing the last non-filtered
+row in @model.
+Call g_object_unref() when done using it</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A new #ClutterModelIter.</doc>
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+      </method>
+      <method name="get_n_columns"
+              c:identifier="clutter_model_get_n_columns"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the number of columns inside @model.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of columns</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_n_rows"
+              c:identifier="clutter_model_get_n_rows"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the number of rows inside @model, eventually taking
+into account any filtering function set using clutter_model_set_filter().
+the length of the filtered @model is returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The length of the @model. If there is a filter set, then</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_sorting_column"
+              c:identifier="clutter_model_get_sorting_column"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the number of column used for sorting the @model.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a column number, or -1 if the model is not sorted</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="insert"
+              c:identifier="clutter_model_insert"
+              version="0.6"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Inserts a new row to the #ClutterModel at @row, setting the row
+values upon creation. For example, to insert a new row at index 100,
+where column 0 is type %G_TYPE_INT and column 1 is of type
+%G_TYPE_STRING:
+&lt;informalexample&gt;&lt;programlisting&gt;
+ClutterModel *model;
+model = clutter_model_default_new (2,
+G_TYPE_INT,    "Score",
+G_TYPE_STRING, "Team");
+clutter_model_insert (model, 3, 0, 42, 1, "Team #1", -1);
+&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position to insert the new row</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_value"
+              c:identifier="clutter_model_insert_value"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets the data in the cell specified by @iter and @column. The type of 
+not exist then it is created.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position of the row to modify</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">column to modify</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new value for the cell</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insertv"
+              c:identifier="clutter_model_insertv"
+              version="0.6">
+        <doc xml:whitespace="preserve">Inserts data at @row into the #ClutterModel, setting the row
+values for the given @columns upon creation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">row index</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="n_columns" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of columns and values to set</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="columns" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a vector containing the columns to set</doc>
+            <array length="1" c:type="guint*">
+              <type name="guint" c:type="guint"/>
+            </array>
+          </parameter>
+          <parameter name="values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a vector containing the values for the cells</doc>
+            <array length="1" c:type="GValue*">
+              <type name="GObject.Value" c:type="GValue"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prepend"
+              c:identifier="clutter_model_prepend"
+              version="0.6"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Creates and prepends a new row to the #ClutterModel, setting the row
+values upon creation. For example, to prepend a new row where column 0
+is type %G_TYPE_INT and column 1 is of type %G_TYPE_STRING:
+&lt;informalexample&gt;&lt;programlisting&gt;
+ClutterModel *model;
+model = clutter_model_default_new (2,
+G_TYPE_INT,    "Score",
+G_TYPE_STRING, "Team");
+clutter_model_prepend (model, 0, 42, 1, "Team #1", -1);
+&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prependv"
+              c:identifier="clutter_model_prependv"
+              version="0.6">
+        <doc xml:whitespace="preserve">Creates and prepends a new row to the #ClutterModel, setting the row
+values for the given @columns upon creation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of columns and values to set</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="columns" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a vector containing the columns to set</doc>
+            <array length="0" c:type="guint*">
+              <type name="guint" c:type="guint"/>
+            </array>
+          </parameter>
+          <parameter name="values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a vector containing the values for the cells</doc>
+            <array length="0" c:type="GValue*">
+              <type name="GObject.Value" c:type="GValue"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove" c:identifier="clutter_model_remove" version="0.6">
+        <doc xml:whitespace="preserve">Removes the row at the given position from the model.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position of row to remove</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="resort" c:identifier="clutter_model_resort" version="0.6">
+        <doc xml:whitespace="preserve">Force a resort on the @model. This function should only be
+used by subclasses of #ClutterModel.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_filter"
+              c:identifier="clutter_model_set_filter"
+              version="0.6">
+        <doc xml:whitespace="preserve">Filters the @model using the given filtering function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="notified"
+                     closure="1"
+                     destroy="2">
+            <doc xml:whitespace="preserve">a #ClutterModelFilterFunc, or #NULL</doc>
+            <type name="ModelFilterFunc" c:type="ClutterModelFilterFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data to pass to @func, or #NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">destroy notifier of @user_data, or #NULL</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_names"
+              c:identifier="clutter_model_set_names"
+              version="0.6">
+        <doc xml:whitespace="preserve">Assigns a name to the columns of a #ClutterModel.
+This function is meant primarily for #GObjects that inherit from
+#ClutterModel, and should only be used when contructing a #ClutterModel.
+It will not work after the initial creation of the #ClutterModel.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of column names</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="names" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of strings</doc>
+            <array length="0" c:type="gchar*">
+              <type name="utf8" c:type="gchar"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sort"
+              c:identifier="clutter_model_set_sort"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sorts @model using the given sorting function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the column to sort on</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <doc xml:whitespace="preserve">a #ClutterModelSortFunc, or #NULL</doc>
+            <type name="ModelSortFunc" c:type="ClutterModelSortFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data to pass to @func, or #NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">destroy notifier of @user_data, or #NULL</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sorting_column"
+              c:identifier="clutter_model_set_sorting_column"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets the model to sort by @column. If @column is a negative value
+the sorting column will be unset.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the column of the @model to sort, or -1</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_types"
+              c:identifier="clutter_model_set_types"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets the types of the columns inside a #ClutterModel.
+This function is meant primarily for #GObjects that inherit from
+#ClutterModel, and should only be used when contructing a #ClutterModel.
+It will not work after the initial creation of the #ClutterModel.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of columns for the model</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="types" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of #GType types</doc>
+            <array length="0" c:type="GType*">
+              <type name="GType" c:type="GType"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="filter-set" version="1.0" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the #ClutterModel has a filter set
+This property is set to %TRUE if a filter function has been
+set using clutter_model_set_filter()</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="ModelPrivate" c:type="ClutterModelPrivate*"/>
+      </field>
+      <glib:signal name="filter-changed" version="0.6">
+        <doc xml:whitespace="preserve">The ::filter-changed signal is emitted when a new filter has been applied</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="row-added" version="0.6">
+        <doc xml:whitespace="preserve">The ::row-added signal is emitted when a new row has been added.
+The data on the row has already been set when the ::row-added signal
+has been emitted.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterModelIter pointing to the new row</doc>
+            <type name="ModelIter"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="row-changed" version="0.6">
+        <doc xml:whitespace="preserve">The ::row-removed signal is emitted when a row has been changed.
+The data on the row has already been updated when the ::row-changed
+signal has been emitted.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterModelIter pointing to the changed row</doc>
+            <type name="ModelIter"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="row-removed" version="0.6">
+        <doc xml:whitespace="preserve">The ::row-removed signal is emitted when a row has been removed.
+The data on the row pointed by the passed iterator is still valid
+when the ::row-removed signal has been emitted.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterModelIter pointing to the removed row</doc>
+            <type name="ModelIter"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="sort-changed" version="0.6">
+        <doc xml:whitespace="preserve">The ::sort-changed signal is emitted after the model has been sorted</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="ModelClass"
+            c:type="ClutterModelClass"
+            glib:is-gtype-struct-for="Model"
+            version="0.6">
+      <doc xml:whitespace="preserve">Class for #ClutterModel instances.</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="get_n_rows">
+        <callback name="get_n_rows">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">The length of the @model. If there is a filter set, then</doc>
+            <type name="guint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_n_columns">
+        <callback name="get_n_columns">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of columns</doc>
+            <type name="guint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_column_name">
+        <callback name="get_column_name">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the column. The model holds the returned</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the column number</doc>
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_column_type">
+        <callback name="get_column_type">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type of the column.</doc>
+            <type name="GType" c:type="GType"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the column number</doc>
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="insert_row" introspectable="0">
+        <callback name="insert_row" introspectable="0">
+          <return-value>
+            <type name="ModelIter" c:type="ClutterModelIter*"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+            <parameter name="index_" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove_row">
+        <callback name="remove_row">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_iter_at_row">
+        <callback name="get_iter_at_row">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">A new #ClutterModelIter, or %NULL if @row was</doc>
+            <type name="ModelIter" c:type="ClutterModelIter*"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <doc xml:whitespace="preserve">position of the row to retrieve</doc>
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="resort" introspectable="0">
+        <callback name="resort" introspectable="0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+            <parameter name="func" transfer-ownership="none" closure="2">
+              <type name="ModelSortFunc" c:type="ClutterModelSortFunc"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="row_added">
+        <callback name="row_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="row_removed">
+        <callback name="row_removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="row_changed">
+        <callback name="row_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="sort_changed">
+        <callback name="sort_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="filter_changed">
+        <callback name="filter_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="model" transfer-ownership="none">
+              <type name="Model" c:type="ClutterModel*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_model_1" introspectable="0">
+        <callback name="_clutter_model_1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_model_2" introspectable="0">
+        <callback name="_clutter_model_2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_model_3" introspectable="0">
+        <callback name="_clutter_model_3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_model_4" introspectable="0">
+        <callback name="_clutter_model_4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_model_5" introspectable="0">
+        <callback name="_clutter_model_5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_model_6" introspectable="0">
+        <callback name="_clutter_model_6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_model_7" introspectable="0">
+        <callback name="_clutter_model_7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_model_8" introspectable="0">
+        <callback name="_clutter_model_8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <callback name="ModelFilterFunc"
+              c:type="ClutterModelFilterFunc"
+              version="0.6">
+      <doc xml:whitespace="preserve">Filters the content of a row in the model.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">If the row should be displayed, return %TRUE</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="model" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterModel</doc>
+          <type name="Model" c:type="ClutterModel*"/>
+        </parameter>
+        <parameter name="iter" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the iterator for the row</doc>
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <doc xml:whitespace="preserve">data passed to clutter_model_set_filter()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ModelForeachFunc"
+              c:type="ClutterModelForeachFunc"
+              version="0.6">
+      <doc xml:whitespace="preserve">Iterates on the content of a row in the model</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the iteration should continue, %FALSE otherwise</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="model" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterModel</doc>
+          <type name="Model" c:type="ClutterModel*"/>
+        </parameter>
+        <parameter name="iter" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the iterator for the row</doc>
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <doc xml:whitespace="preserve">data passed to clutter_model_foreach()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="ModelIter"
+           c:symbol-prefix="model_iter"
+           c:type="ClutterModelIter"
+           version="0.6"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="ClutterModelIter"
+           glib:get-type="clutter_model_iter_get_type"
+           glib:type-struct="ModelIterClass">
+      <doc xml:whitespace="preserve">Base class for list models iters. The #ClutterModelIter structure
+contains only private data and should be manipulated using the
+provided API.</doc>
+      <virtual-method name="copy" invoker="copy" version="0.8">
+        <doc xml:whitespace="preserve">Copies the passed iterator.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a copy of the iterator, or %NULL</doc>
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_model" invoker="get_model" version="0.6">
+        <doc xml:whitespace="preserve">Retrieves a pointer to the #ClutterModel that this iter is part of.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to a #ClutterModel.</doc>
+          <type name="Model" c:type="ClutterModel*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_row" invoker="get_row" version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the position of the row that the @iter points to.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the position of the @iter in the model</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_value" invoker="get_value" version="0.6">
+        <doc xml:whitespace="preserve">Sets an initializes @value to that at @column. When done with @value, 
+g_value_unset() needs to be called to free any allocated memory.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">column number to retrieve the value from</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">an empty #GValue to set</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="is_first" invoker="is_first" version="0.6">
+        <doc xml:whitespace="preserve">Gets whether the current iterator is at the beginning of the model
+to which it belongs.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">#TRUE if @iter is the first iter in the filtered model</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="is_last" invoker="is_last" version="0.6">
+        <doc xml:whitespace="preserve">Gets whether the iterator is at the end of the model to which it
+belongs.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">#TRUE if @iter is the last iter in the filtered model.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="next" invoker="next" version="0.6">
+        <doc xml:whitespace="preserve">Updates the @iter to point at the next position in the model.
+The model implementation should take into account the presence of
+a filter function.
+row in the model.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The passed iterator, updated to point at the next</doc>
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="prev" invoker="prev" version="0.6">
+        <doc xml:whitespace="preserve">Sets the @iter to point at the previous position in the model.
+The model implementation should take into account the presence of
+a filter function.
+row in the model.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The passed iterator, updated to point at the previous</doc>
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_value" invoker="set_value" version="0.6">
+        <doc xml:whitespace="preserve">Sets the data in the cell specified by @iter and @column. The type of</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">column number to retrieve the value from</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new value for the cell</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="copy" c:identifier="clutter_model_iter_copy" version="0.8">
+        <doc xml:whitespace="preserve">Copies the passed iterator.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a copy of the iterator, or %NULL</doc>
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+      </method>
+      <method name="get"
+              c:identifier="clutter_model_iter_get"
+              version="0.6"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the value of one or more cells in the row referenced by @iter. The
+variable argument list should contain integer column numbers, each column
+column number followed by a place to store the value being retrieved. The
+list is terminated by a -1.
+For example, to get a value from column 0 with type %G_TYPE_STRING use:
+&lt;informalexample&gt;&lt;programlisting&gt;
+clutter_model_iter_get (iter, 0, &amp;place_string_here, -1);
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+where place_string_here is a gchar* to be filled with the string. If
+appropriate, the returned values have to be freed or unreferenced.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_model"
+              c:identifier="clutter_model_iter_get_model"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves a pointer to the #ClutterModel that this iter is part of.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to a #ClutterModel.</doc>
+          <type name="Model" c:type="ClutterModel*"/>
+        </return-value>
+      </method>
+      <method name="get_row"
+              c:identifier="clutter_model_iter_get_row"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the position of the row that the @iter points to.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the position of the @iter in the model</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_valist"
+              c:identifier="clutter_model_iter_get_valist"
+              version="0.6"
+              introspectable="0">
+        <doc xml:whitespace="preserve">See clutter_model_iter_get(). This version takes a va_list for language
+bindings.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="args" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a list of column/return location pairs, terminated by -1</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value"
+              c:identifier="clutter_model_iter_get_value"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets an initializes @value to that at @column. When done with @value, 
+g_value_unset() needs to be called to free any allocated memory.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">column number to retrieve the value from</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">an empty #GValue to set</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_first"
+              c:identifier="clutter_model_iter_is_first"
+              version="0.6">
+        <doc xml:whitespace="preserve">Gets whether the current iterator is at the beginning of the model
+to which it belongs.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">#TRUE if @iter is the first iter in the filtered model</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_last"
+              c:identifier="clutter_model_iter_is_last"
+              version="0.6">
+        <doc xml:whitespace="preserve">Gets whether the iterator is at the end of the model to which it
+belongs.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">#TRUE if @iter is the last iter in the filtered model.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="next" c:identifier="clutter_model_iter_next" version="0.6">
+        <doc xml:whitespace="preserve">Updates the @iter to point at the next position in the model.
+The model implementation should take into account the presence of
+a filter function.
+row in the model.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The passed iterator, updated to point at the next</doc>
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+      </method>
+      <method name="prev" c:identifier="clutter_model_iter_prev" version="0.6">
+        <doc xml:whitespace="preserve">Sets the @iter to point at the previous position in the model.
+The model implementation should take into account the presence of
+a filter function.
+row in the model.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The passed iterator, updated to point at the previous</doc>
+          <type name="ModelIter" c:type="ClutterModelIter*"/>
+        </return-value>
+      </method>
+      <method name="set"
+              c:identifier="clutter_model_iter_set"
+              version="0.6"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets the value of one or more cells in the row referenced by @iter. The
+variable argument list should contain integer column numbers, each column
+column number followed by the value to be set. The  list is terminated by a
+-1.
+For example, to set column 0 with type %G_TYPE_STRING, use:
+&lt;informalexample&gt;&lt;programlisting&gt;
+clutter_model_iter_set (iter, 0, "foo", -1);
+&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_valist"
+              c:identifier="clutter_model_iter_set_valist"
+              version="0.6"
+              introspectable="0">
+        <doc xml:whitespace="preserve">See clutter_model_iter_set(); this version takes a va_list for language
+bindings.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="args" transfer-ownership="none">
+            <doc xml:whitespace="preserve">va_list of column/value pairs, terminiated by -1</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_value"
+              c:identifier="clutter_model_iter_set_value"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets the data in the cell specified by @iter and @column. The type of</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">column number to retrieve the value from</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new value for the cell</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="model"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">A reference to the #ClutterModel that this iter belongs to.</doc>
+        <type name="Model"/>
+      </property>
+      <property name="row"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The row number to which this iter points to.</doc>
+        <type name="guint"/>
+      </property>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="ModelIterPrivate" c:type="ClutterModelIterPrivate*"/>
+      </field>
+    </class>
+    <record name="ModelIterClass"
+            c:type="ClutterModelIterClass"
+            glib:is-gtype-struct-for="ModelIter"
+            version="0.6">
+      <doc xml:whitespace="preserve">Class for #ClutterModelIter instances.</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="get_value">
+        <callback name="get_value">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <doc xml:whitespace="preserve">column number to retrieve the value from</doc>
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="value"
+                       direction="out"
+                       caller-allocates="1"
+                       transfer-ownership="none">
+              <doc xml:whitespace="preserve">an empty #GValue to set</doc>
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_value">
+        <callback name="set_value">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <doc xml:whitespace="preserve">column number to retrieve the value from</doc>
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <doc xml:whitespace="preserve">new value for the cell</doc>
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="is_first">
+        <callback name="is_first">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">#TRUE if @iter is the first iter in the filtered model</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="is_last">
+        <callback name="is_last">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">#TRUE if @iter is the last iter in the filtered model.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="next">
+        <callback name="next">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">The passed iterator, updated to point at the next</doc>
+            <type name="ModelIter" c:type="ClutterModelIter*"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="prev">
+        <callback name="prev">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">The passed iterator, updated to point at the previous</doc>
+            <type name="ModelIter" c:type="ClutterModelIter*"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_model">
+        <callback name="get_model">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to a #ClutterModel.</doc>
+            <type name="Model" c:type="ClutterModel*"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_row">
+        <callback name="get_row">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position of the @iter in the model</doc>
+            <type name="guint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="copy">
+        <callback name="copy">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a copy of the iterator, or %NULL</doc>
+            <type name="ModelIter" c:type="ClutterModelIter*"/>
+          </return-value>
+          <parameters>
+            <parameter name="iter" transfer-ownership="none">
+              <type name="ModelIter" c:type="ClutterModelIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_model_iter_1" introspectable="0">
+        <callback name="_clutter_model_iter_1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_model_iter_2" introspectable="0">
+        <callback name="_clutter_model_iter_2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_model_iter_3" introspectable="0">
+        <callback name="_clutter_model_iter_3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_model_iter_4" introspectable="0">
+        <callback name="_clutter_model_iter_4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_model_iter_5" introspectable="0">
+        <callback name="_clutter_model_iter_5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_model_iter_6" introspectable="0">
+        <callback name="_clutter_model_iter_6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_model_iter_7" introspectable="0">
+        <callback name="_clutter_model_iter_7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_model_iter_8" introspectable="0">
+        <callback name="_clutter_model_iter_8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ModelIterPrivate"
+            c:type="ClutterModelIterPrivate"
+            disguised="1">
+    </record>
+    <record name="ModelPrivate" c:type="ClutterModelPrivate" disguised="1">
+    </record>
+    <callback name="ModelSortFunc" c:type="ClutterModelSortFunc" version="0.6">
+      <doc xml:whitespace="preserve">Compares the content of two rows in the model.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a positive integer if @a is after @b, a negative integer if</doc>
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="model" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterModel</doc>
+          <type name="Model" c:type="ClutterModel*"/>
+        </parameter>
+        <parameter name="a" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue representing the contents of the row</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue representing the contents of the second row</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <doc xml:whitespace="preserve">data passed to clutter_model_set_sort()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="ModifierType"
+              version="0.4"
+              glib:type-name="ClutterModifierType"
+              glib:get-type="clutter_modifier_type_get_type"
+              c:type="ClutterModifierType">
+      <doc xml:whitespace="preserve">Masks applied to a #ClutterEvent by modifiers.</doc>
+      <member name="shift_mask"
+              value="1"
+              c:identifier="CLUTTER_SHIFT_MASK"
+              glib:nick="shift-mask"/>
+      <member name="lock_mask"
+              value="2"
+              c:identifier="CLUTTER_LOCK_MASK"
+              glib:nick="lock-mask"/>
+      <member name="control_mask"
+              value="4"
+              c:identifier="CLUTTER_CONTROL_MASK"
+              glib:nick="control-mask"/>
+      <member name="mod1_mask"
+              value="8"
+              c:identifier="CLUTTER_MOD1_MASK"
+              glib:nick="mod1-mask"/>
+      <member name="mod2_mask"
+              value="16"
+              c:identifier="CLUTTER_MOD2_MASK"
+              glib:nick="mod2-mask"/>
+      <member name="mod3_mask"
+              value="32"
+              c:identifier="CLUTTER_MOD3_MASK"
+              glib:nick="mod3-mask"/>
+      <member name="mod4_mask"
+              value="64"
+              c:identifier="CLUTTER_MOD4_MASK"
+              glib:nick="mod4-mask"/>
+      <member name="mod5_mask"
+              value="128"
+              c:identifier="CLUTTER_MOD5_MASK"
+              glib:nick="mod5-mask"/>
+      <member name="button1_mask"
+              value="256"
+              c:identifier="CLUTTER_BUTTON1_MASK"
+              glib:nick="button1-mask"/>
+      <member name="button2_mask"
+              value="512"
+              c:identifier="CLUTTER_BUTTON2_MASK"
+              glib:nick="button2-mask"/>
+      <member name="button3_mask"
+              value="1024"
+              c:identifier="CLUTTER_BUTTON3_MASK"
+              glib:nick="button3-mask"/>
+      <member name="button4_mask"
+              value="2048"
+              c:identifier="CLUTTER_BUTTON4_MASK"
+              glib:nick="button4-mask"/>
+      <member name="button5_mask"
+              value="4096"
+              c:identifier="CLUTTER_BUTTON5_MASK"
+              glib:nick="button5-mask"/>
+      <member name="super_mask"
+              value="67108864"
+              c:identifier="CLUTTER_SUPER_MASK"
+              glib:nick="super-mask"/>
+      <member name="hyper_mask"
+              value="134217728"
+              c:identifier="CLUTTER_HYPER_MASK"
+              glib:nick="hyper-mask"/>
+      <member name="meta_mask"
+              value="268435456"
+              c:identifier="CLUTTER_META_MASK"
+              glib:nick="meta-mask"/>
+      <member name="release_mask"
+              value="1073741824"
+              c:identifier="CLUTTER_RELEASE_MASK"
+              glib:nick="release-mask"/>
+      <member name="modifier_mask"
+              value="1543512063"
+              c:identifier="CLUTTER_MODIFIER_MASK"
+              glib:nick="modifier-mask"/>
+    </bitfield>
+    <constant name="MonBrightnessDown" value="269025027">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="MonBrightnessUp" value="269025026">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="MotionEvent" c:type="ClutterMotionEvent" version="0.2">
+      <doc xml:whitespace="preserve">Event for the pointer motion</doc>
+      <field name="type" writable="1">
+        <type name="EventType" c:type="ClutterEventType"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="EventFlags" c:type="ClutterEventFlags"/>
+      </field>
+      <field name="stage" writable="1">
+        <type name="Stage" c:type="ClutterStage*"/>
+      </field>
+      <field name="source" writable="1">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </field>
+      <field name="x" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="modifier_state" writable="1">
+        <type name="ModifierType" c:type="ClutterModifierType"/>
+      </field>
+      <field name="axes" writable="1">
+        <type name="gdouble" c:type="gdouble*"/>
+      </field>
+      <field name="device" writable="1">
+        <type name="InputDevice" c:type="ClutterInputDevice*"/>
+      </field>
+    </record>
+    <constant name="MouseKeys_Accel_Enable" value="65143">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="MouseKeys_Enable" value="65142">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Muhenkan" value="65314">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Multi_key" value="65312">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="MultipleCandidate" value="65341">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Music" value="269025170">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="MyComputer" value="269025075">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="MySites" value="269025127">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="N" value="78">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Nacute" value="465">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="NairaSign" value="16785574">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ncaron" value="466">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ncedilla" value="977">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="New" value="269025128">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="NewSheqelSign" value="16785578">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="News" value="269025129">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Next" value="65366">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Next_VMode" value="269024802">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Next_Virtual_Screen" value="65234">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ntilde" value="209">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Num_Lock" value="65407">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="O" value="79">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="OE" value="5052">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Oacute" value="211">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Obarred" value="16777631">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Obelowdot" value="16785100">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ocaron" value="16777681">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ocircumflex" value="212">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ocircumflexacute" value="16785104">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ocircumflexbelowdot" value="16785112">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ocircumflexgrave" value="16785106">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ocircumflexhook" value="16785108">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ocircumflextilde" value="16785110">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Odiaeresis" value="214">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Odoubleacute" value="469">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="OfficeHome" value="269025130">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="OffscreenEffect"
+           c:symbol-prefix="offscreen_effect"
+           c:type="ClutterOffscreenEffect"
+           version="1.4"
+           parent="Effect"
+           abstract="1"
+           glib:type-name="ClutterOffscreenEffect"
+           glib:get-type="clutter_offscreen_effect_get_type"
+           glib:type-struct="OffscreenEffectClass">
+      <doc xml:whitespace="preserve">The #ClutterOffscreenEffect structure contains only private data
+and should be accessed using the provided API</doc>
+      <virtual-method name="create_texture"
+                      invoker="create_texture"
+                      version="1.4">
+        <doc xml:whitespace="preserve">Calls the create_texture() virtual function of the @effect
+%COGL_INVALID_HANDLE. The returned handle has its reference
+count increased.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a handle to a Cogl texture, or</doc>
+          <type name="Cogl.Handle" c:type="CoglHandle"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the minimum width of the target texture</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the minimum height of the target texture</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="paint_target" invoker="paint_target" version="1.4">
+        <doc xml:whitespace="preserve">Calls the paint_target() virtual function of the @effect</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <method name="create_texture"
+              c:identifier="clutter_offscreen_effect_create_texture"
+              version="1.4">
+        <doc xml:whitespace="preserve">Calls the create_texture() virtual function of the @effect
+%COGL_INVALID_HANDLE. The returned handle has its reference
+count increased.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a handle to a Cogl texture, or</doc>
+          <type name="Cogl.Handle" c:type="CoglHandle"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the minimum width of the target texture</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the minimum height of the target texture</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_target"
+              c:identifier="clutter_offscreen_effect_get_target"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the material used as a render target for the offscreen
+buffer created by @effect
+You should only use the returned #CoglMaterial when painting. The
+returned material might change between different frames.
+returned material is owned by Clutter and it should not be
+modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglMaterial or %NULL. The</doc>
+          <type name="Cogl.Material" c:type="CoglMaterial*"/>
+        </return-value>
+      </method>
+      <method name="paint_target"
+              c:identifier="clutter_offscreen_effect_paint_target"
+              version="1.4">
+        <doc xml:whitespace="preserve">Calls the paint_target() virtual function of the @effect</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="Effect" c:type="ClutterEffect"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="OffscreenEffectPrivate"
+              c:type="ClutterOffscreenEffectPrivate*"/>
+      </field>
+    </class>
+    <record name="OffscreenEffectClass"
+            c:type="ClutterOffscreenEffectClass"
+            glib:is-gtype-struct-for="OffscreenEffect"
+            version="1.4">
+      <doc xml:whitespace="preserve">The #ClutterOffscreenEffectClass structure contains only private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="EffectClass" c:type="ClutterEffectClass"/>
+      </field>
+      <field name="create_texture">
+        <callback name="create_texture">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a handle to a Cogl texture, or</doc>
+            <type name="Cogl.Handle" c:type="CoglHandle"/>
+          </return-value>
+          <parameters>
+            <parameter name="effect" transfer-ownership="none">
+              <type name="OffscreenEffect" c:type="ClutterOffscreenEffect*"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the minimum width of the target texture</doc>
+              <type name="gfloat" c:type="gfloat"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the minimum height of the target texture</doc>
+              <type name="gfloat" c:type="gfloat"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="paint_target">
+        <callback name="paint_target">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="effect" transfer-ownership="none">
+              <type name="OffscreenEffect" c:type="ClutterOffscreenEffect*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_offscreen1" introspectable="0">
+        <callback name="_clutter_offscreen1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_offscreen2" introspectable="0">
+        <callback name="_clutter_offscreen2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_offscreen3" introspectable="0">
+        <callback name="_clutter_offscreen3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_offscreen4" introspectable="0">
+        <callback name="_clutter_offscreen4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_offscreen5" introspectable="0">
+        <callback name="_clutter_offscreen5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_offscreen6" introspectable="0">
+        <callback name="_clutter_offscreen6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_offscreen7" introspectable="0">
+        <callback name="_clutter_offscreen7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="OffscreenEffectPrivate"
+            c:type="ClutterOffscreenEffectPrivate"
+            disguised="1">
+    </record>
+    <constant name="Ograve" value="210">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ohook" value="16785102">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ohorn" value="16777632">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ohornacute" value="16785114">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ohornbelowdot" value="16785122">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ohorngrave" value="16785116">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ohornhook" value="16785118">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ohorntilde" value="16785120">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Omacron" value="978">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ooblique" value="216">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Open" value="269025131">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="OpenURL" value="269025080">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Option" value="269025132">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Oslash" value="216">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Otilde" value="213">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Overlay1_Enable" value="65144">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Overlay2_Enable" value="65145">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="P" value="80">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PATH_RELATIVE" value="32">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PRIORITY_REDRAW" value="50">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pabovedot" value="16784982">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="PageTurnEffect"
+           c:symbol-prefix="page_turn_effect"
+           c:type="ClutterPageTurnEffect"
+           version="1.4"
+           parent="DeformEffect"
+           glib:type-name="ClutterPageTurnEffect"
+           glib:get-type="clutter_page_turn_effect_get_type"
+           glib:type-struct="PageTurnEffectClass">
+      <doc xml:whitespace="preserve">&lt;structname&gt;ClutterPageTurnEffect&lt;/structname&gt; is an opaque structure
+whose members can only be accessed using the provided API</doc>
+      <constructor name="new"
+                   c:identifier="clutter_page_turn_effect_new"
+                   version="1.4">
+        <doc xml:whitespace="preserve">Creates a new #ClutterPageTurnEffect instance with the given parameters</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterPageTurnEffect</doc>
+          <type name="Effect" c:type="ClutterEffect*"/>
+        </return-value>
+        <parameters>
+          <parameter name="period" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the period of the page curl, between 0.0 and 1.0</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="angle" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the angle of the page curl, between 0.0 and 360.0</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="radius" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the radius of the page curl, in pixels</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_angle"
+              c:identifier="clutter_page_turn_effect_get_angle"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the value set using clutter_page_turn_effect_get_angle()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the angle of the page curling</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_period"
+              c:identifier="clutter_page_turn_effect_get_period"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the value set using clutter_page_turn_effect_get_period()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the period of the page curling</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_radius"
+              c:identifier="clutter_page_turn_effect_get_radius"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the value set using clutter_page_turn_effect_set_radius()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the radius of the page curling</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="set_angle"
+              c:identifier="clutter_page_turn_effect_set_angle"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the angle of the page curling, in degrees</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the angle of the page curl, in degrees</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_period"
+              c:identifier="clutter_page_turn_effect_set_period"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the period of the page curling, between 0.0 (no curling)
+and 1.0 (fully curled)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="period" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the period of the page curl, between 0.0 and 1.0</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_radius"
+              c:identifier="clutter_page_turn_effect_set_radius"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the radius of the page curling</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="radius" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the radius of the page curling, in pixels</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="angle"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The angle of the page rotation, in degrees, between 0.0 and 360.0</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="period"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The period of the page turn, between 0.0 (no curling) and
+1.0 (fully curled)</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="radius"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The radius of the page curl, in pixels</doc>
+        <type name="gfloat"/>
+      </property>
+    </class>
+    <record name="PageTurnEffectClass"
+            c:type="ClutterPageTurnEffectClass"
+            disguised="1"
+            glib:is-gtype-struct-for="PageTurnEffect">
+    </record>
+    <constant name="Page_Down" value="65366">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Page_Up" value="65365">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="PaintVolume"
+            c:type="ClutterPaintVolume"
+            version="1.4"
+            glib:type-name="ClutterPaintVolume"
+            glib:get-type="clutter_paint_volume_get_type"
+            c:symbol-prefix="paint_volume">
+      <doc xml:whitespace="preserve">&lt;structname&gt;ClutterPaintVolume&lt;/structname&gt; is an opaque structure
+whose members cannot be directly accessed.
+A &lt;structname&gt;ClutterPaintVolume&lt;/structname&gt; represents an
+a bounding volume whos internal representation isn't defined but
+can be set and queried in terms of an axis aligned bounding box.
+Other internal representation and methods for describing the
+bounding volume may be added in the future.</doc>
+      <method name="copy"
+              c:identifier="clutter_paint_volume_copy"
+              version="1.6">
+        <doc xml:whitespace="preserve">Copies @pv into a new #ClutterPaintVolume</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated copy of a #ClutterPaintVolume</doc>
+          <type name="PaintVolume" c:type="ClutterPaintVolume*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="clutter_paint_volume_free"
+              version="1.6">
+        <doc xml:whitespace="preserve">Frees the resources allocated by @pv</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_depth"
+              c:identifier="clutter_paint_volume_get_depth"
+              version="1.6">
+        <doc xml:whitespace="preserve">Retrieves the depth of the paint volume set using
+clutter_paint_volume_get_depth()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the depth</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_height"
+              c:identifier="clutter_paint_volume_get_height"
+              version="1.6">
+        <doc xml:whitespace="preserve">Retrieves the height of the paint volume set using
+clutter_paint_volume_get_height()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the height of the paint volume, in pixels</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_origin"
+              c:identifier="clutter_paint_volume_get_origin"
+              version="1.6">
+        <doc xml:whitespace="preserve">Retrieves the origin of the #ClutterPaintVolume.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="vertex"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">the return location for a #ClutterVertex</doc>
+            <type name="Vertex" c:type="ClutterVertex*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_width"
+              c:identifier="clutter_paint_volume_get_width"
+              version="1.6">
+        <doc xml:whitespace="preserve">Retrieves the width set using clutter_paint_volume_get_width()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the width, in pixels</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="set_depth"
+              c:identifier="clutter_paint_volume_set_depth"
+              version="1.6">
+        <doc xml:whitespace="preserve">Sets the depth of the paint volume.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="depth" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the depth of the paint volume, in pixels</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_allocation"
+              c:identifier="clutter_paint_volume_set_from_allocation"
+              version="1.6">
+        <doc xml:whitespace="preserve">Sets the #ClutterPaintVolume from the allocation of @actor.
+This function should be used when overriding the
+&lt;function&gt;get_paint_volume()&lt;/function&gt; by #ClutterActor sub-classes that do
+not paint outside their allocation.
+A typical example is:
+|[
+static gboolean
+my_actor_get_paint_volume (ClutterActor       *self,
+ClutterPaintVolume *volume)
+{
+return clutter_paint_volume_set_from_allocation (volume, self);
+}
+]|
+otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the paint volume was successfully set, and %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_height"
+              c:identifier="clutter_paint_volume_set_height"
+              version="1.6">
+        <doc xml:whitespace="preserve">Sets the height of the paint volume.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the height of the paint volume, in pixels</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_origin"
+              c:identifier="clutter_paint_volume_set_origin"
+              version="1.6">
+        <doc xml:whitespace="preserve">Sets the origin of the paint volume.
+The origin is defined as the X, Y and Z coordinates of the top-left
+corner of an actor's paint volume, in actor coordinates.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="origin" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterVertex</doc>
+            <type name="Vertex" c:type="ClutterVertex*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_width"
+              c:identifier="clutter_paint_volume_set_width"
+              version="1.6">
+        <doc xml:whitespace="preserve">Sets the width of the paint volume.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the width of the paint volume, in pixels</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="union"
+              c:identifier="clutter_paint_volume_union"
+              version="1.6">
+        <doc xml:whitespace="preserve">Updates the geometry of @pv to be the union bounding box that
+encompases @pv and @another_pv.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="another_pv" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A second #ClutterPaintVolume to union with @pv</doc>
+            <type name="PaintVolume" c:type="ClutterPaintVolume*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <class name="ParamSpecColor"
+           c:symbol-prefix="param_color"
+           c:type="ClutterParamSpecColor"
+           version="1.0"
+           introspectable="0"
+           glib:type-name="ClutterParamSpecColor"
+           glib:get-type="clutter_param_color_get_type"
+           glib:fundamental="1">
+      <doc xml:whitespace="preserve">A #GParamSpec subclass for defining properties holding
+a #ClutterColor.</doc>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="GObject.ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="default_value">
+        <type name="Color" c:type="ClutterColor*"/>
+      </field>
+    </class>
+    <class name="ParamSpecFixed"
+           c:symbol-prefix="param_fixed"
+           c:type="ClutterParamSpecFixed"
+           version="0.8"
+           introspectable="0"
+           glib:type-name="ClutterParamSpecFixed"
+           glib:get-type="clutter_param_fixed_get_type"
+           glib:fundamental="1">
+      <doc xml:whitespace="preserve">#GParamSpec subclass for fixed point based properties</doc>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="GObject.ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="minimum">
+        <type name="Cogl.Fixed" c:type="CoglFixed"/>
+      </field>
+      <field name="maximum">
+        <type name="Cogl.Fixed" c:type="CoglFixed"/>
+      </field>
+      <field name="default_value">
+        <type name="Cogl.Fixed" c:type="CoglFixed"/>
+      </field>
+    </class>
+    <class name="ParamSpecUnit"
+           c:symbol-prefix="param_units"
+           glib:type-name="ClutterParamSpecUnit"
+           glib:get-type="clutter_param_units_get_type"
+           glib:fundamental="1">
+    </class>
+    <record name="ParamSpecUnits"
+            c:type="ClutterParamSpecUnits"
+            version="1.0"
+            introspectable="0">
+      <doc xml:whitespace="preserve">#GParamSpec subclass for unit based properties.</doc>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="GObject.ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="default_type" writable="1">
+        <type name="UnitType" c:type="ClutterUnitType"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="minimum" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="maximum" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+    </record>
+    <constant name="Paste" value="269025133">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Path"
+           c:symbol-prefix="path"
+           c:type="ClutterPath"
+           version="1.0"
+           parent="GObject.InitiallyUnowned"
+           glib:type-name="ClutterPath"
+           glib:get-type="clutter_path_get_type"
+           glib:type-struct="PathClass">
+      <doc xml:whitespace="preserve">The #ClutterPath struct contains only private data and should
+be accessed with the functions below.</doc>
+      <constructor name="new" c:identifier="clutter_path_new" version="1.0">
+        <doc xml:whitespace="preserve">Creates a new #ClutterPath instance with no nodes.
+The object has a floating reference so if you add it to a
+#ClutterBehaviourPath then you do not need to unref it.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterPath</doc>
+          <type name="Path" c:type="ClutterPath*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_description"
+                   c:identifier="clutter_path_new_with_description"
+                   version="1.0">
+        <doc xml:whitespace="preserve">Creates a new #ClutterPath instance with the nodes described in
+the string.
+The object has a floating reference so if you add it to a
+#ClutterBehaviourPath then you do not need to unref it.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterPath</doc>
+          <type name="Path" c:type="ClutterPath*"/>
+        </return-value>
+        <parameters>
+          <parameter name="desc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string describing the path</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="add_cairo_path"
+              c:identifier="clutter_path_add_cairo_path"
+              version="1.0">
+        <doc xml:whitespace="preserve">Add the nodes of the Cairo path to the end of @path.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cpath" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a Cairo path</doc>
+            <type name="cairo.Path" c:type="cairo_path_t*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_close"
+              c:identifier="clutter_path_add_close"
+              version="1.0">
+        <doc xml:whitespace="preserve">Adds a %CLUTTER_PATH_CLOSE type node to the path. This creates a
+straight line from the last node to the last %CLUTTER_PATH_MOVE_TO
+type node.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="add_curve_to"
+              c:identifier="clutter_path_add_curve_to"
+              version="1.0">
+        <doc xml:whitespace="preserve">Adds a %CLUTTER_PATH_CURVE_TO type node to the path. This causes
+the actor to follow a bezier from the last node to (@x_3, @y_3) using
+(@x_1, @y_1) and (@x_2,@y_2) as control points.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the x coordinate of the first control point</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y_1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the y coordinate of the first control point</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="x_2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the x coordinate of the second control point</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y_2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the y coordinate of the second control point</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="x_3" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the x coordinate of the third control point</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y_3" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the y coordinate of the third control point</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_line_to"
+              c:identifier="clutter_path_add_line_to"
+              version="1.0">
+        <doc xml:whitespace="preserve">Adds a %CLUTTER_PATH_LINE_TO type node to the path. This causes the
+actor to move to the new coordinates in a straight line.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the x coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the y coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_move_to"
+              c:identifier="clutter_path_add_move_to"
+              version="1.0">
+        <doc xml:whitespace="preserve">Adds a %CLUTTER_PATH_MOVE_TO type node to the path. This is usually
+used as the first node in a path. It can also be used in the middle
+of the path to cause the actor to jump to the new coordinate.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the x coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the y coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_node"
+              c:identifier="clutter_path_add_node"
+              version="1.0">
+        <doc xml:whitespace="preserve">Adds @node to the end of the path.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterPathNode</doc>
+            <type name="PathNode" c:type="ClutterPathNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_rel_curve_to"
+              c:identifier="clutter_path_add_rel_curve_to"
+              version="1.0">
+        <doc xml:whitespace="preserve">Same as clutter_path_add_curve_to() except the coordinates are
+relative to the previous node.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the x coordinate of the first control point</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y_1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the y coordinate of the first control point</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="x_2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the x coordinate of the second control point</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y_2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the y coordinate of the second control point</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="x_3" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the x coordinate of the third control point</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y_3" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the y coordinate of the third control point</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_rel_line_to"
+              c:identifier="clutter_path_add_rel_line_to"
+              version="1.0">
+        <doc xml:whitespace="preserve">Same as clutter_path_add_line_to() except the coordinates are
+relative to the previous node.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the x coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the y coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_rel_move_to"
+              c:identifier="clutter_path_add_rel_move_to"
+              version="1.0">
+        <doc xml:whitespace="preserve">Same as clutter_path_add_move_to() except the coordinates are
+relative to the previous node.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the x coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the y coordinate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_string"
+              c:identifier="clutter_path_add_string"
+              version="1.0">
+        <doc xml:whitespace="preserve">Adds new nodes to the end of the path as described in @str. The
+format is a subset of the SVG path format. Each node is represented
+by a letter and is followed by zero, one or three pairs of
+coordinates. The coordinates can be separated by spaces or a
+comma. The types are:
+&lt;variablelist&gt;
+&lt;varlistentry&gt;&lt;term&gt;M&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt;
+Adds a %CLUTTER_PATH_MOVE_TO node. Takes one pair of coordinates.
+&lt;/para&gt;&lt;/listitem&gt;&lt;/varlistentry&gt;
+&lt;varlistentry&gt;&lt;term&gt;L&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt;
+Adds a %CLUTTER_PATH_LINE_TO node. Takes one pair of coordinates.
+&lt;/para&gt;&lt;/listitem&gt;&lt;/varlistentry&gt;
+&lt;varlistentry&gt;&lt;term&gt;C&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt;
+Adds a %CLUTTER_PATH_CURVE_TO node. Takes three pairs of coordinates.
+&lt;/para&gt;&lt;/listitem&gt;&lt;/varlistentry&gt;
+&lt;varlistentry&gt;&lt;term&gt;z&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt;
+Adds a %CLUTTER_PATH_CLOSE node. No coordinates are needed.
+&lt;/para&gt;&lt;/listitem&gt;&lt;/varlistentry&gt;
+&lt;/variablelist&gt;
+The M, L and C commands can also be specified in lower case which
+means the coordinates are relative to the previous node.
+For example, to move an actor in a 100 by 100 pixel square centered
+on the point 300,300 you could use the following path:
+&lt;informalexample&gt;
+&lt;programlisting&gt;
+M 250,350 l 0 -100 L 350,250 l 0 100 z
+&lt;/programlisting&gt;
+&lt;/informalexample&gt;
+If the path description isn't valid %FALSE will be returned and no
+nodes will be added.
+otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE is the path description was valid or %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string describing the new nodes</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear" c:identifier="clutter_path_clear" version="1.0">
+        <doc xml:whitespace="preserve">Removes all nodes from the path.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="foreach" c:identifier="clutter_path_foreach" version="1.0">
+        <doc xml:whitespace="preserve">Calls a function for each node of the path.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">the function to call with each node</doc>
+            <type name="PathCallback" c:type="ClutterPathCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data to pass to the function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_description"
+              c:identifier="clutter_path_get_description"
+              version="1.0">
+        <doc xml:whitespace="preserve">Returns a newly allocated string describing the path in the same
+format as used by clutter_path_add_string().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a string description of the path. Free with g_free().</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_length"
+              c:identifier="clutter_path_get_length"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves an approximation of the total length of the path.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the length of the path.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_n_nodes"
+              c:identifier="clutter_path_get_n_nodes"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the number of nodes in the path.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of nodes.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_node"
+              c:identifier="clutter_path_get_node"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the node of the path indexed by @index.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the node number to retrieve</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a location to store a copy of the node</doc>
+            <type name="PathNode" c:type="ClutterPathNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_nodes"
+              c:identifier="clutter_path_get_nodes"
+              version="1.0">
+        <doc xml:whitespace="preserve">Returns a #GSList of #ClutterPathNode&lt;!-- --&gt;s. The list should be
+freed with g_slist_free(). The nodes are owned by the path and
+should not be freed. Altering the path may cause the nodes in the
+list to become invalid so you should copy them if you want to keep
+the list.
+list of nodes in the path.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="PathNode"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_position"
+              c:identifier="clutter_path_get_position"
+              version="1.0">
+        <doc xml:whitespace="preserve">The value in @progress represents a position along the path where
+0.0 is the beginning and 1.0 is the end of the path. An
+interpolated position is then stored in @position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">index of the node used to calculate the position.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="progress" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a position along the path as a fraction of its length</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">location to store the position</doc>
+            <type name="Knot" c:type="ClutterKnot*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_node"
+              c:identifier="clutter_path_insert_node"
+              version="1.0">
+        <doc xml:whitespace="preserve">Inserts @node into the path before the node at the given offset. If</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">offset of where to insert the node</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the node to insert</doc>
+            <type name="PathNode" c:type="ClutterPathNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_node"
+              c:identifier="clutter_path_remove_node"
+              version="1.0">
+        <doc xml:whitespace="preserve">Removes the node at the given offset from the path.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">index of the node to remove</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="replace_node"
+              c:identifier="clutter_path_replace_node"
+              version="1.0">
+        <doc xml:whitespace="preserve">Replaces the node at offset @index_ with @node.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">index to the existing node</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the replacement node</doc>
+            <type name="PathNode" c:type="ClutterPathNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_description"
+              c:identifier="clutter_path_set_description"
+              version="1.0">
+        <doc xml:whitespace="preserve">Replaces all of the nodes in the path with nodes described by
+If the string is invalid then %FALSE is returned and the path is
+unaltered.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE is the path was valid, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string describing the path</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_cairo_path"
+              c:identifier="clutter_path_to_cairo_path"
+              version="1.0">
+        <doc xml:whitespace="preserve">Add the nodes of the ClutterPath to the path in the Cairo context.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cr" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a Cairo context</doc>
+            <type name="cairo.Context" c:type="cairo_t*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="description" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="length" transfer-ownership="none">
+        <type name="guint"/>
+      </property>
+      <field name="parent" readable="0" private="1">
+        <type name="GObject.InitiallyUnowned" c:type="GInitiallyUnowned"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="PathPrivate" c:type="ClutterPathPrivate*"/>
+      </field>
+    </class>
+    <callback name="PathCallback" c:type="ClutterPathCallback" version="1.0">
+      <doc xml:whitespace="preserve">This function is passed to clutter_path_foreach() and will be
+called for each node contained in the path.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="node" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the node</doc>
+          <type name="PathNode" c:type="ClutterPathNode*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">optional data passed to the function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="PathClass"
+            c:type="ClutterPathClass"
+            glib:is-gtype-struct-for="Path"
+            version="1.0">
+      <doc xml:whitespace="preserve">The #ClutterPathClass struct contains only private data.</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="GObject.InitiallyUnownedClass"
+              c:type="GInitiallyUnownedClass"/>
+      </field>
+    </record>
+    <class name="PathConstraint"
+           c:symbol-prefix="path_constraint"
+           c:type="ClutterPathConstraint"
+           version="1.6"
+           parent="Constraint"
+           glib:type-name="ClutterPathConstraint"
+           glib:get-type="clutter_path_constraint_get_type"
+           glib:type-struct="PathConstraintClass">
+      <doc xml:whitespace="preserve">&lt;structname&gt;ClutterPathConstraint&lt;/structname&gt; is an opaque structure
+whose members cannot be directly accessed</doc>
+      <constructor name="new"
+                   c:identifier="clutter_path_constraint_new"
+                   version="1.6">
+        <doc xml:whitespace="preserve">Creates a new #ClutterPathConstraint with the given @path and @offset</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #ClutterPathConstraint</doc>
+          <type name="Constraint" c:type="ClutterConstraint*"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterPath, or %NULL</doc>
+            <type name="Path" c:type="ClutterPath*"/>
+          </parameter>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the offset along the #ClutterPath</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_offset"
+              c:identifier="clutter_path_constraint_get_offset"
+              version="1.6">
+        <doc xml:whitespace="preserve">Retrieves the offset along the #ClutterPath used by @constraint.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the offset</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_path"
+              c:identifier="clutter_path_constraint_get_path"
+              version="1.6">
+        <doc xml:whitespace="preserve">Retrieves a pointer to the #ClutterPath used by @constraint.
+#ClutterPathConstraint, or %NULL. The returned #ClutterPath is owned
+by the constraint and it should not be unreferenced</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #ClutterPath used by the</doc>
+          <type name="Path" c:type="ClutterPath*"/>
+        </return-value>
+      </method>
+      <method name="set_offset"
+              c:identifier="clutter_path_constraint_set_offset"
+              version="1.6">
+        <doc xml:whitespace="preserve">Sets the offset along the #ClutterPath used by @constraint.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the offset along the path</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_path"
+              c:identifier="clutter_path_constraint_set_path"
+              version="1.6">
+        <doc xml:whitespace="preserve">Sets the @path to be followed by the #ClutterPathConstraint.
+The @constraint will take ownership of the #ClutterPath passed to this
+function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterPath</doc>
+            <type name="Path" c:type="ClutterPath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="offset"
+                version="1.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The offset along the #ClutterPathConstraint:path, between -1.0 and 2.0.</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="path"
+                version="1.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #ClutterPath used to constrain the position of an actor.</doc>
+        <type name="Path"/>
+      </property>
+      <glib:signal name="node-reached" version="1.6">
+        <doc xml:whitespace="preserve">The ::node-reached signal is emitted each time a
+#ClutterPathConstraint:offset value results in the actor
+passing a #ClutterPathNode</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterActor using the @constraint</doc>
+            <type name="Actor"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of the node that has been reached</doc>
+            <type name="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="PathConstraintClass"
+            c:type="ClutterPathConstraintClass"
+            disguised="1"
+            glib:is-gtype-struct-for="PathConstraint">
+    </record>
+    <record name="PathNode"
+            c:type="ClutterPathNode"
+            version="1.0"
+            glib:type-name="ClutterPathNode"
+            glib:get-type="clutter_path_node_get_type"
+            c:symbol-prefix="path_node">
+      <doc xml:whitespace="preserve">Represents a single node of a #ClutterPath.
+Some of the coordinates in @points may be unused for some node
+types. %CLUTTER_PATH_MOVE_TO and %CLUTTER_PATH_LINE_TO use only one
+pair of coordinates, %CLUTTER_PATH_CURVE_TO uses all three and
+%CLUTTER_PATH_CLOSE uses none.</doc>
+      <field name="type" writable="1">
+        <type name="PathNodeType" c:type="ClutterPathNodeType"/>
+      </field>
+      <field name="points" writable="1">
+        <array zero-terminated="0" c:type="ClutterKnot" fixed-size="3">
+          <type name="Knot" c:type="ClutterKnot"/>
+        </array>
+      </field>
+      <method name="copy" c:identifier="clutter_path_node_copy" version="1.0">
+        <doc xml:whitespace="preserve">Makes an allocated copy of a node.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the copied node.</doc>
+          <type name="PathNode" c:type="ClutterPathNode*"/>
+        </return-value>
+      </method>
+      <method name="equal"
+              c:identifier="clutter_path_node_equal"
+              version="1.0">
+        <doc xml:whitespace="preserve">Compares two nodes and checks if they are the same type with the
+same coordinates.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the nodes are the same.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="node_b" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Second node</doc>
+            <type name="PathNode" c:type="ClutterPathNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free" c:identifier="clutter_path_node_free" version="1.0">
+        <doc xml:whitespace="preserve">Frees the memory of an allocated node.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="PathNodeType"
+                 version="1.0"
+                 glib:type-name="ClutterPathNodeType"
+                 glib:get-type="clutter_path_node_type_get_type"
+                 c:type="ClutterPathNodeType">
+      <doc xml:whitespace="preserve">Types of nodes in a #ClutterPath.</doc>
+      <member name="move_to"
+              value="0"
+              c:identifier="CLUTTER_PATH_MOVE_TO"
+              glib:nick="move-to"/>
+      <member name="line_to"
+              value="1"
+              c:identifier="CLUTTER_PATH_LINE_TO"
+              glib:nick="line-to"/>
+      <member name="curve_to"
+              value="2"
+              c:identifier="CLUTTER_PATH_CURVE_TO"
+              glib:nick="curve-to"/>
+      <member name="close"
+              value="3"
+              c:identifier="CLUTTER_PATH_CLOSE"
+              glib:nick="close"/>
+      <member name="rel_move_to"
+              value="32"
+              c:identifier="CLUTTER_PATH_REL_MOVE_TO"
+              glib:nick="rel-move-to"/>
+      <member name="rel_line_to"
+              value="33"
+              c:identifier="CLUTTER_PATH_REL_LINE_TO"
+              glib:nick="rel-line-to"/>
+      <member name="rel_curve_to"
+              value="34"
+              c:identifier="CLUTTER_PATH_REL_CURVE_TO"
+              glib:nick="rel-curve-to"/>
+    </enumeration>
+    <record name="PathPrivate" c:type="ClutterPathPrivate" disguised="1">
+    </record>
+    <constant name="Pause" value="65299">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="Perspective"
+            c:type="ClutterPerspective"
+            version="0.4"
+            glib:type-name="ClutterPerspective"
+            glib:get-type="clutter_perspective_get_type"
+            c:symbol-prefix="perspective">
+      <doc xml:whitespace="preserve">Stage perspective definition. #ClutterPerspective is only used by
+the fixed point version of clutter_stage_set_perspective().</doc>
+      <field name="fovy" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="aspect" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="z_near" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="z_far" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+    </record>
+    <constant name="PesetaSign" value="16785575">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Phone" value="269025134">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <enumeration name="PickMode"
+                 version="1.0"
+                 glib:type-name="ClutterPickMode"
+                 glib:get-type="clutter_pick_mode_get_type"
+                 c:type="ClutterPickMode">
+      <doc xml:whitespace="preserve">Controls the paint cycle of the scene graph when in pick mode</doc>
+      <member name="none"
+              value="0"
+              c:identifier="CLUTTER_PICK_NONE"
+              glib:nick="none"/>
+      <member name="reactive"
+              value="1"
+              c:identifier="CLUTTER_PICK_REACTIVE"
+              glib:nick="reactive"/>
+      <member name="all"
+              value="2"
+              c:identifier="CLUTTER_PICK_ALL"
+              glib:nick="all"/>
+    </enumeration>
+    <constant name="Pictures" value="269025169">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_Accelerate" value="65274">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_Button1" value="65257">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_Button2" value="65258">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_Button3" value="65259">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_Button4" value="65260">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_Button5" value="65261">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_Button_Dflt" value="65256">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_DblClick1" value="65263">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_DblClick2" value="65264">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_DblClick3" value="65265">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_DblClick4" value="65266">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_DblClick5" value="65267">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_DblClick_Dflt" value="65262">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_DfltBtnNext" value="65275">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_DfltBtnPrev" value="65276">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_Down" value="65251">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_DownLeft" value="65254">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_DownRight" value="65255">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_Drag1" value="65269">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_Drag2" value="65270">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_Drag3" value="65271">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_Drag4" value="65272">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_Drag5" value="65277">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_Drag_Dflt" value="65268">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_EnableKeys" value="65273">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_Left" value="65248">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_Right" value="65249">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_Up" value="65250">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_UpLeft" value="65252">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Pointer_UpRight" value="65253">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PowerDown" value="269025057">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PowerOff" value="269025066">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Prev_VMode" value="269024803">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Prev_Virtual_Screen" value="65233">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PreviousCandidate" value="65342">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Print" value="65377">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Prior" value="65365">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <callback name="ProgressFunc" c:type="ClutterProgressFunc" version="1.0">
+      <doc xml:whitespace="preserve">Prototype of the progress function used to compute the value
+between the two ends @a and @b of an interval depending on
+the value of @progress.
+The #GValue in @retval is already initialized with the same
+type as @a and @b.
+This function will be called by #ClutterInterval if the
+type of the values of the interval was registered using
+clutter_interval_register_progress_func().
+the value and stored it inside @retval</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the function successfully computed</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the initial value of an interval</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the final value of an interval</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="progress" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the progress factor, between 0 and 1</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </parameter>
+        <parameter name="retval" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the value used to store the progress</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <constant name="Q" value="81">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="R" value="82">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="R1" value="65490">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="R10" value="65499">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="R11" value="65500">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="R12" value="65501">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="R13" value="65502">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="R14" value="65503">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="R15" value="65504">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="R2" value="65491">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="R3" value="65492">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="R4" value="65493">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="R5" value="65494">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="R6" value="65495">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="R7" value="65496">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="R8" value="65497">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="R9" value="65498">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Racute" value="448">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Rcaron" value="472">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Rcedilla" value="931">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Rectangle"
+           c:symbol-prefix="rectangle"
+           c:type="ClutterRectangle"
+           version="0.1"
+           parent="Actor"
+           glib:type-name="ClutterRectangle"
+           glib:get-type="clutter_rectangle_get_type"
+           glib:type-struct="RectangleClass">
+      <doc xml:whitespace="preserve">The #ClutterRectangle structure contains only private data
+and should be accessed using the provided API</doc>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Animatable"/>
+      <implements name="Scriptable"/>
+      <constructor name="new" c:identifier="clutter_rectangle_new">
+        <doc xml:whitespace="preserve">Creates a new #ClutterActor with a rectangular shape.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #ClutterActor</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_color"
+                   c:identifier="clutter_rectangle_new_with_color">
+        <doc xml:whitespace="preserve">Creates a new #ClutterActor with a rectangular shape
+and of the given @color.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #ClutterActor</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterColor</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_border_color"
+              c:identifier="clutter_rectangle_get_border_color"
+              version="0.2">
+        <doc xml:whitespace="preserve">Gets the color of the border used by @rectangle and places
+it into @color.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for a #ClutterColor</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_border_width"
+              c:identifier="clutter_rectangle_get_border_width"
+              version="0.2">
+        <doc xml:whitespace="preserve">Gets the width (in pixels) of the border used by @rectangle</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the border's width</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_color" c:identifier="clutter_rectangle_get_color">
+        <doc xml:whitespace="preserve">Retrieves the color of @rectangle.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for a #ClutterColor</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_border_color"
+              c:identifier="clutter_rectangle_set_border_color">
+        <doc xml:whitespace="preserve">Sets the color of the border used by @rectangle using @color</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the color of the border</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_border_width"
+              c:identifier="clutter_rectangle_set_border_width"
+              version="0.2">
+        <doc xml:whitespace="preserve">Sets the width (in pixel) of the border used by @rectangle.
+A @width of 0 will unset the border.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the width of the border</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_color" c:identifier="clutter_rectangle_set_color">
+        <doc xml:whitespace="preserve">Sets the color of @rectangle.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterColor</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="border-color"
+                version="0.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The color of the border of the rectangle.</doc>
+        <type name="Color"/>
+      </property>
+      <property name="border-width"
+                version="0.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The width of the border of the rectangle, in pixels.</doc>
+        <type name="guint"/>
+      </property>
+      <property name="color" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The color of the rectangle.</doc>
+        <type name="Color"/>
+      </property>
+      <property name="has-border"
+                version="0.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the #ClutterRectangle should be displayed with a border.</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="parent" readable="0" private="1">
+        <type name="Actor" c:type="ClutterActor"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="RectanglePrivate" c:type="ClutterRectanglePrivate*"/>
+      </field>
+    </class>
+    <record name="RectangleClass"
+            c:type="ClutterRectangleClass"
+            glib:is-gtype-struct-for="Rectangle"
+            version="0.1">
+      <doc xml:whitespace="preserve">The #ClutterRectangleClass structure contains only private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="ActorClass" c:type="ClutterActorClass"/>
+      </field>
+      <field name="_clutter_rectangle1" introspectable="0">
+        <callback name="_clutter_rectangle1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_rectangle2" introspectable="0">
+        <callback name="_clutter_rectangle2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_rectangle3" introspectable="0">
+        <callback name="_clutter_rectangle3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_rectangle4" introspectable="0">
+        <callback name="_clutter_rectangle4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="RectanglePrivate"
+            c:type="ClutterRectanglePrivate"
+            disguised="1">
+    </record>
+    <constant name="Red" value="269025187">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Redo" value="65382">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Refresh" value="269025065">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Reload" value="269025139">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="RepeatKeys_Enable" value="65138">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Reply" value="269025138">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <enumeration name="RequestMode"
+                 version="0.8"
+                 glib:type-name="ClutterRequestMode"
+                 glib:get-type="clutter_request_mode_get_type"
+                 c:type="ClutterRequestMode">
+      <doc xml:whitespace="preserve">Specifies the type of requests for a #ClutterActor.</doc>
+      <member name="height_for_width"
+              value="0"
+              c:identifier="CLUTTER_REQUEST_HEIGHT_FOR_WIDTH"
+              glib:nick="height-for-width"/>
+      <member name="width_for_height"
+              value="1"
+              c:identifier="CLUTTER_REQUEST_WIDTH_FOR_HEIGHT"
+              glib:nick="width-for-height"/>
+    </enumeration>
+    <constant name="Return" value="65293">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Right" value="65363">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="RockerDown" value="269025060">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="RockerEnter" value="269025061">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="RockerUp" value="269025059">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Romaji" value="65316">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <enumeration name="RotateAxis"
+                 version="0.4"
+                 glib:type-name="ClutterRotateAxis"
+                 glib:get-type="clutter_rotate_axis_get_type"
+                 c:type="ClutterRotateAxis">
+      <doc xml:whitespace="preserve">Axis of a rotation.</doc>
+      <member name="x_axis"
+              value="0"
+              c:identifier="CLUTTER_X_AXIS"
+              glib:nick="x-axis"/>
+      <member name="y_axis"
+              value="1"
+              c:identifier="CLUTTER_Y_AXIS"
+              glib:nick="y-axis"/>
+      <member name="z_axis"
+              value="2"
+              c:identifier="CLUTTER_Z_AXIS"
+              glib:nick="z-axis"/>
+    </enumeration>
+    <enumeration name="RotateDirection"
+                 version="0.4"
+                 glib:type-name="ClutterRotateDirection"
+                 glib:get-type="clutter_rotate_direction_get_type"
+                 c:type="ClutterRotateDirection">
+      <doc xml:whitespace="preserve">Direction of a rotation.</doc>
+      <member name="cw"
+              value="0"
+              c:identifier="CLUTTER_ROTATE_CW"
+              glib:nick="cw"/>
+      <member name="ccw"
+              value="1"
+              c:identifier="CLUTTER_ROTATE_CCW"
+              glib:nick="ccw"/>
+    </enumeration>
+    <constant name="RotateWindows" value="269025140">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="RotationKB" value="269025142">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="RotationPB" value="269025141">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="RupeeSign" value="16785576">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="S" value="83">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="SCHWA" value="16777615">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Sabovedot" value="16784992">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Sacute" value="422">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Save" value="269025143">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Scaron" value="425">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Scedilla" value="426">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Scircumflex" value="734">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Score"
+           c:symbol-prefix="score"
+           c:type="ClutterScore"
+           version="0.6"
+           parent="GObject.Object"
+           glib:type-name="ClutterScore"
+           glib:get-type="clutter_score_get_type"
+           glib:type-struct="ScoreClass">
+      <doc xml:whitespace="preserve">The #ClutterScore structure contains only private data
+and should be accessed using the provided API</doc>
+      <constructor name="new" c:identifier="clutter_score_new" version="0.6">
+        <doc xml:whitespace="preserve">Creates a new #ClutterScore. A #ClutterScore is an object that can
+hold multiple #ClutterTimeline&lt;!-- --&gt;s in a sequential order.
+when done.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #ClutterScore. Use g_object_unref()</doc>
+          <type name="Score" c:type="ClutterScore*"/>
+        </return-value>
+      </constructor>
+      <virtual-method name="completed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="paused">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="started">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="timeline_completed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeline" transfer-ownership="none">
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="timeline_started">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeline" transfer-ownership="none">
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="append" c:identifier="clutter_score_append" version="0.6">
+        <doc xml:whitespace="preserve">Appends a timeline to another one existing in the score; the newly
+appended timeline will be started when @parent is complete.
+If @parent is %NULL, the new #ClutterTimeline will be started when
+clutter_score_start() is called.
+#ClutterScore will take a reference on @timeline.
+0 on failure. The returned id can be used with clutter_score_remove()
+or clutter_score_get_timeline().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the id of the #ClutterTimeline inside the score, or</doc>
+          <type name="gulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterTimeline in the score, or %NULL</doc>
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+          <parameter name="timeline" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterTimeline</doc>
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append_at_marker"
+              c:identifier="clutter_score_append_at_marker"
+              version="0.8">
+        <doc xml:whitespace="preserve">Appends @timeline at the given @marker_name on the @parent
+#ClutterTimeline.
+If you want to append @timeline at the end of @parent, use
+clutter_score_append().
+The #ClutterScore will take a reference on @timeline.
+0 on failure. The returned id can be used with clutter_score_remove()
+or clutter_score_get_timeline().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the id of the #ClutterTimeline inside the score, or</doc>
+          <type name="gulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the parent #ClutterTimeline</doc>
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+          <parameter name="marker_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the marker to use</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="timeline" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterTimeline to append</doc>
+            <type name="Timeline" c:type="ClutterTimeline*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_loop"
+              c:identifier="clutter_score_get_loop"
+              version="0.6">
+        <doc xml:whitespace="preserve">Gets whether @score is looping</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the score is looping</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_timeline"
+              c:identifier="clutter_score_get_timeline"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterTimeline for @id_ inside @score.
+function does not increase the reference count on the returned
+#ClutterTimeline</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the requested timeline, or %NULL. This</doc>
+          <type name="Timeline" c:type="ClutterTimeline*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the id of the timeline</doc>
+            <type name="gulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_playing"
+              c:identifier="clutter_score_is_playing"
+              version="0.6">
+        <doc xml:whitespace="preserve">Query state of a #ClutterScore instance.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if score is currently playing</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="list_timelines"
+              c:identifier="clutter_score_list_timelines"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves a list of all the #ClutterTimelines managed by @score.
+#GSList containing all the timelines in the score. This function does
+not increase the reference count of the returned timelines. Use
+g_slist_free() on the returned list to deallocate its resources.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="Timeline"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="pause" c:identifier="clutter_score_pause" version="0.6">
+        <doc xml:whitespace="preserve">Pauses a playing score @score.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="remove" c:identifier="clutter_score_remove" version="0.6">
+        <doc xml:whitespace="preserve">Removes the #ClutterTimeline with the given id inside @score. If
+the timeline has other timelines attached to it, those are removed
+as well.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the id of the timeline to remove</doc>
+            <type name="gulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_all"
+              c:identifier="clutter_score_remove_all"
+              version="0.6">
+        <doc xml:whitespace="preserve">Removes all the timelines inside @score.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="rewind" c:identifier="clutter_score_rewind" version="0.6">
+        <doc xml:whitespace="preserve">Rewinds a #ClutterScore to its initial state.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_loop"
+              c:identifier="clutter_score_set_loop"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets whether @score should loop. A looping #ClutterScore will start
+from its initial state after the ::complete signal has been fired.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="loop" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE for enable looping</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="start" c:identifier="clutter_score_start" version="0.6">
+        <doc xml:whitespace="preserve">Starts the score.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="stop" c:identifier="clutter_score_stop" version="0.6">
+        <doc xml:whitespace="preserve">Stops and rewinds a playing #ClutterScore instance.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="loop"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the #ClutterScore should restart once finished.</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="parent" readable="0" private="1">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="ScorePrivate" c:type="ClutterScorePrivate*"/>
+      </field>
+      <glib:signal name="completed" version="0.6">
+        <doc xml:whitespace="preserve">The ::completed signal is emitted each time a #ClutterScore terminates.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="paused" version="0.6">
+        <doc xml:whitespace="preserve">The ::paused signal is emitted each time a #ClutterScore
+is paused.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="started" version="0.6">
+        <doc xml:whitespace="preserve">The ::started signal is emitted each time a #ClutterScore starts playing.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="timeline-completed" version="0.6">
+        <doc xml:whitespace="preserve">The ::timeline-completed signal is emitted each time a timeline
+inside a #ClutterScore terminates.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeline" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the completed timeline</doc>
+            <type name="Timeline"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="timeline-started" version="0.6">
+        <doc xml:whitespace="preserve">The ::timeline-started signal is emitted each time a new timeline
+inside a #ClutterScore starts playing.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeline" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the current timeline</doc>
+            <type name="Timeline"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="ScoreClass"
+            c:type="ClutterScoreClass"
+            glib:is-gtype-struct-for="Score"
+            version="0.6">
+      <doc xml:whitespace="preserve">The #ClutterScoreClass structure contains only private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="timeline_started">
+        <callback name="timeline_started">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="score" transfer-ownership="none">
+              <type name="Score" c:type="ClutterScore*"/>
+            </parameter>
+            <parameter name="timeline" transfer-ownership="none">
+              <type name="Timeline" c:type="ClutterTimeline*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="timeline_completed">
+        <callback name="timeline_completed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="score" transfer-ownership="none">
+              <type name="Score" c:type="ClutterScore*"/>
+            </parameter>
+            <parameter name="timeline" transfer-ownership="none">
+              <type name="Timeline" c:type="ClutterTimeline*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="started">
+        <callback name="started">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="score" transfer-ownership="none">
+              <type name="Score" c:type="ClutterScore*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="completed">
+        <callback name="completed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="score" transfer-ownership="none">
+              <type name="Score" c:type="ClutterScore*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="paused">
+        <callback name="paused">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="score" transfer-ownership="none">
+              <type name="Score" c:type="ClutterScore*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_score_1" introspectable="0">
+        <callback name="_clutter_score_1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_score_2" introspectable="0">
+        <callback name="_clutter_score_2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_score_3" introspectable="0">
+        <callback name="_clutter_score_3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_score_4" introspectable="0">
+        <callback name="_clutter_score_4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_score_5" introspectable="0">
+        <callback name="_clutter_score_5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ScorePrivate" c:type="ClutterScorePrivate" disguised="1">
+    </record>
+    <constant name="ScreenSaver" value="269025069">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Script"
+           c:symbol-prefix="script"
+           c:type="ClutterScript"
+           version="0.6"
+           parent="GObject.Object"
+           glib:type-name="ClutterScript"
+           glib:get-type="clutter_script_get_type"
+           glib:type-struct="ScriptClass">
+      <doc xml:whitespace="preserve">The #ClutterScript structure contains only private data
+and should be accessed using the provided API</doc>
+      <constructor name="new" c:identifier="clutter_script_new" version="0.6">
+        <doc xml:whitespace="preserve">Creates a new #ClutterScript instance. #ClutterScript can be used
+to load objects definitions for scenegraph elements, like actors,
+or behavioural elements, like behaviours and timelines. The
+definitions must be encoded using the JavaScript Object Notation (JSON)
+language.
+g_object_unref() when done.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #ClutterScript instance. Use</doc>
+          <type name="Script" c:type="ClutterScript*"/>
+        </return-value>
+      </constructor>
+      <virtual-method name="get_type_from_name"
+                      invoker="get_type_from_name"
+                      version="0.6">
+        <doc xml:whitespace="preserve">Looks up a type by name, using the virtual function that 
+#ClutterScript has for that purpose. This function should
+rarely be used.
+%G_TYPE_INVALID if not corresponding type was found.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type for the requested type name, or</doc>
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="type_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the type to look up</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="add_search_paths"
+              c:identifier="clutter_script_add_search_paths"
+              version="0.8">
+        <doc xml:whitespace="preserve">Adds @paths to the list of search paths held by @script.
+The search paths are used by clutter_script_lookup_filename(), which
+can be used to define search paths for the textures source file name
+or other custom, file-based properties.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="paths" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array of strings containing different search paths</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="n_paths" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of the passed array</doc>
+            <type name="gsize" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect_signals"
+              c:identifier="clutter_script_connect_signals"
+              version="0.6">
+        <doc xml:whitespace="preserve">Connects all the signals defined into a UI definition file to their
+handlers.
+This method invokes clutter_script_connect_signals_full() internally
+and uses  #GModule's introspective features (by opening the current
+module's scope) to look at the application's symbol table.
+Note that this function will not work if #GModule is not supported by
+the platform Clutter is running on.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to be passed to the signal handlers, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect_signals_full"
+              c:identifier="clutter_script_connect_signals_full"
+              version="0.6"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Connects all the signals defined into a UI definition file to their
+handlers.
+This function allows to control how the signal handlers are
+going to be connected to their respective signals. It is meant
+primarily for language bindings to allow resolving the function
+names using the native API, but it can also be used on platforms
+that do not support GModule.
+Applications should use clutter_script_connect_signals().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none" closure="1">
+            <doc xml:whitespace="preserve">signal connection function</doc>
+            <type name="ScriptConnectFunc" c:type="ClutterScriptConnectFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to be passed to the signal handlers, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ensure_objects"
+              c:identifier="clutter_script_ensure_objects"
+              version="0.6">
+        <doc xml:whitespace="preserve">Ensure that every object defined inside @script is correctly
+constructed. You should rarely need to use this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_object"
+              c:identifier="clutter_script_get_object"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the object bound to @name. This function does not increment
+the reference count of the returned object.
+with the given name was available</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the named object, or %NULL if no object</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the object to retrieve</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_objects"
+              c:identifier="clutter_script_get_objects"
+              version="0.6"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Retrieves a list of objects for the given names. After @script, object
+names/return location pairs should be listed, with a %NULL pointer
+ending the list, like:
+&lt;informalexample&gt;&lt;programlisting&gt;
+GObject *my_label, *a_button, *main_timeline;
+clutter_script_get_objects (script,
+"my-label", &amp;amp;my_label,
+"a-button", &amp;amp;a_button,
+"main-timeline", &amp;amp;main_timeline,
+NULL);
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+returned objects.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of objects returned.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the first object to retrieve</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_type_from_name"
+              c:identifier="clutter_script_get_type_from_name"
+              version="0.6">
+        <doc xml:whitespace="preserve">Looks up a type by name, using the virtual function that 
+#ClutterScript has for that purpose. This function should
+rarely be used.
+%G_TYPE_INVALID if not corresponding type was found.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type for the requested type name, or</doc>
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="type_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the type to look up</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_objects"
+              c:identifier="clutter_script_list_objects"
+              version="0.8.2">
+        <doc xml:whitespace="preserve">Retrieves all the objects created by @script.
+objects it returns.
+of #GObject&lt;!-- --&gt;s, or %NULL. The objects are owned by the
+#ClutterScript instance. Use g_list_free() on the returned list when
+done.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a list</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="GObject.Object"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="load_from_data"
+              c:identifier="clutter_script_load_from_data"
+              version="0.6"
+              throws="1">
+        <doc xml:whitespace="preserve">Loads the definitions from @data into @script and merges with
+the currently loaded ones, if any.
+accordingly. On success, the merge id for the UI definitions is
+returned. You can use the merge id with clutter_script_unmerge_objects().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">on error, zero is returned and @error is set</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a buffer containing the definitions</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of the buffer, or -1 if @data is a NUL-terminated buffer</doc>
+            <type name="gssize" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_from_file"
+              c:identifier="clutter_script_load_from_file"
+              version="0.6"
+              throws="1">
+        <doc xml:whitespace="preserve">Loads the definitions from @filename into @script and merges with
+the currently loaded ones, if any.
+accordingly. On success, the merge id for the UI definitions is
+returned. You can use the merge id with clutter_script_unmerge_objects().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">on error, zero is returned and @error is set</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the full path to the definition file</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_filename"
+              c:identifier="clutter_script_lookup_filename"
+              version="0.8">
+        <doc xml:whitespace="preserve">Looks up @filename inside the search paths of @script. If @filename
+is found, its full path will be returned .
+found.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the full path of @filename or %NULL if no path was</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the file to lookup</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unmerge_objects"
+              c:identifier="clutter_script_unmerge_objects"
+              version="0.6">
+        <doc xml:whitespace="preserve">Unmerges the objects identified by @merge_id.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="merge_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">merge id returned when loading a UI definition</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="filename" version="0.6" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The path of the currently parsed file. If #ClutterScript:filename-set
+is %FALSE then the value of this property is undefined.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="filename-set" version="0.6" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the #ClutterScript:filename property is set. If this property
+is %TRUE then the currently parsed data comes from a file, and the
+file name is stored inside the #ClutterScript:filename property.</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="ScriptPrivate" c:type="ClutterScriptPrivate*"/>
+      </field>
+    </class>
+    <record name="ScriptClass"
+            c:type="ClutterScriptClass"
+            glib:is-gtype-struct-for="Script"
+            version="0.6">
+      <doc xml:whitespace="preserve">The #ClutterScriptClass structure contains only private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="get_type_from_name">
+        <callback name="get_type_from_name">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type for the requested type name, or</doc>
+            <type name="GType" c:type="GType"/>
+          </return-value>
+          <parameters>
+            <parameter name="script" transfer-ownership="none">
+              <type name="Script" c:type="ClutterScript*"/>
+            </parameter>
+            <parameter name="type_name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">name of the type to look up</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_reserved1" introspectable="0">
+        <callback name="_clutter_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved2" introspectable="0">
+        <callback name="_clutter_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved3" introspectable="0">
+        <callback name="_clutter_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved4" introspectable="0">
+        <callback name="_clutter_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved5" introspectable="0">
+        <callback name="_clutter_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved6" introspectable="0">
+        <callback name="_clutter_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved7" introspectable="0">
+        <callback name="_clutter_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved8" introspectable="0">
+        <callback name="_clutter_reserved8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <callback name="ScriptConnectFunc"
+              c:type="ClutterScriptConnectFunc"
+              version="0.6">
+      <doc xml:whitespace="preserve">This is the signature of a function used to connect signals.  It is used
+by the clutter_script_connect_signals_full() function.  It is mainly
+intended for interpreted language bindings, but could be useful where the
+programmer wants more control over the signal connection process.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="script" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterScript</doc>
+          <type name="Script" c:type="ClutterScript*"/>
+        </parameter>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the object to connect</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="signal_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the signal</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="handler_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the signal handler</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="connect_object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the object to connect the signal to, or %NULL</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">signal connection flags</doc>
+          <type name="GObject.ConnectFlags" c:type="GConnectFlags"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="6">
+          <doc xml:whitespace="preserve">user data to pass to the signal handler</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="ScriptError"
+                 version="0.6"
+                 glib:type-name="ClutterScriptError"
+                 glib:get-type="clutter_script_error_get_type"
+                 c:type="ClutterScriptError"
+                 glib:error-quark="clutter_script_error_quark">
+      <doc xml:whitespace="preserve">#ClutterScript error enumeration.</doc>
+      <member name="type_function"
+              value="0"
+              c:identifier="CLUTTER_SCRIPT_ERROR_INVALID_TYPE_FUNCTION"
+              glib:nick="type-function"/>
+      <member name="property"
+              value="1"
+              c:identifier="CLUTTER_SCRIPT_ERROR_INVALID_PROPERTY"
+              glib:nick="property"/>
+      <member name="value"
+              value="2"
+              c:identifier="CLUTTER_SCRIPT_ERROR_INVALID_VALUE"
+              glib:nick="value"/>
+    </enumeration>
+    <record name="ScriptPrivate" c:type="ClutterScriptPrivate" disguised="1">
+    </record>
+    <interface name="Scriptable"
+               c:symbol-prefix="scriptable"
+               c:type="ClutterScriptable"
+               version="0.6"
+               glib:type-name="ClutterScriptable"
+               glib:get-type="clutter_scriptable_get_type"
+               glib:type-struct="ScriptableIface">
+      <doc xml:whitespace="preserve">#ClutterScriptable is an opaque structure whose members cannot be directly
+accessed</doc>
+      <virtual-method name="get_id" invoker="get_id" version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the id of @scriptable set using clutter_scriptable_set_id().
+the scriptable object and should never be modified of freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the id of the object. The returned string is owned by</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="parse_custom_node"
+                      invoker="parse_custom_node"
+                      version="0.6">
+        <doc xml:whitespace="preserve">Parses the passed JSON node. The implementation must set the type
+of the passed #GValue pointer using g_value_init().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the node was successfully parsed, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="script" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterScript creating the scriptable instance</doc>
+            <type name="Script" c:type="ClutterScript*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the generic value to be set</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the node</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the JSON node to be parsed</doc>
+            <type name="Json.Node" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_custom_property"
+                      invoker="set_custom_property"
+                      version="0.6">
+        <doc xml:whitespace="preserve">Overrides the common properties setting. The underlying virtual
+function should be used when implementing custom properties.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="script" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterScript creating the scriptable instance</doc>
+            <type name="Script" c:type="ClutterScript*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the property</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_id" invoker="set_id" version="0.6">
+        <doc xml:whitespace="preserve">Sets @id_ as the unique Clutter script it for this instance of
+#ClutterScriptableIface.
+This name can be used by user interface designer applications to
+define a unique name for an object constructable using the UI
+definition language parsed by #ClutterScript.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterScript id of the object</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_id"
+              c:identifier="clutter_scriptable_get_id"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the id of @scriptable set using clutter_scriptable_set_id().
+the scriptable object and should never be modified of freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the id of the object. The returned string is owned by</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="parse_custom_node"
+              c:identifier="clutter_scriptable_parse_custom_node"
+              version="0.6">
+        <doc xml:whitespace="preserve">Parses the passed JSON node. The implementation must set the type
+of the passed #GValue pointer using g_value_init().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the node was successfully parsed, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="script" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterScript creating the scriptable instance</doc>
+            <type name="Script" c:type="ClutterScript*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the generic value to be set</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the node</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the JSON node to be parsed</doc>
+            <type name="Json.Node" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_custom_property"
+              c:identifier="clutter_scriptable_set_custom_property"
+              version="0.6">
+        <doc xml:whitespace="preserve">Overrides the common properties setting. The underlying virtual
+function should be used when implementing custom properties.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="script" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterScript creating the scriptable instance</doc>
+            <type name="Script" c:type="ClutterScript*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the property</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_id"
+              c:identifier="clutter_scriptable_set_id"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets @id_ as the unique Clutter script it for this instance of
+#ClutterScriptableIface.
+This name can be used by user interface designer applications to
+define a unique name for an object constructable using the UI
+definition language parsed by #ClutterScript.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #ClutterScript id of the object</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="ScriptableIface"
+            c:type="ClutterScriptableIface"
+            glib:is-gtype-struct-for="Scriptable"
+            version="0.6">
+      <doc xml:whitespace="preserve">Interface for implementing "scriptable" objects. An object implementing
+this interface can override the parsing and properties setting sequence
+when loading a UI definition data with #ClutterScript</doc>
+      <field name="g_iface" readable="0" private="1">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="set_id">
+        <callback name="set_id">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="scriptable" transfer-ownership="none">
+              <type name="Scriptable" c:type="ClutterScriptable*"/>
+            </parameter>
+            <parameter name="id_" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the #ClutterScript id of the object</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_id">
+        <callback name="get_id">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the id of the object. The returned string is owned by</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="scriptable" transfer-ownership="none">
+              <type name="Scriptable" c:type="ClutterScriptable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="parse_custom_node">
+        <callback name="parse_custom_node">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the node was successfully parsed, %FALSE otherwise.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="scriptable" transfer-ownership="none">
+              <type name="Scriptable" c:type="ClutterScriptable*"/>
+            </parameter>
+            <parameter name="script" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the #ClutterScript creating the scriptable instance</doc>
+              <type name="Script" c:type="ClutterScript*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the generic value to be set</doc>
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the name of the node</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="node" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the JSON node to be parsed</doc>
+              <type name="Json.Node" c:type="JsonNode*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_custom_property">
+        <callback name="set_custom_property">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="scriptable" transfer-ownership="none">
+              <type name="Scriptable" c:type="ClutterScriptable*"/>
+            </parameter>
+            <parameter name="script" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the #ClutterScript creating the scriptable instance</doc>
+              <type name="Script" c:type="ClutterScript*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the name of the property</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the value of the property</doc>
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <constant name="ScrollClick" value="269025146">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <enumeration name="ScrollDirection"
+                 version="0.4"
+                 glib:type-name="ClutterScrollDirection"
+                 glib:get-type="clutter_scroll_direction_get_type"
+                 c:type="ClutterScrollDirection">
+      <doc xml:whitespace="preserve">Direction of a pointer scroll event.</doc>
+      <member name="up"
+              value="0"
+              c:identifier="CLUTTER_SCROLL_UP"
+              glib:nick="up"/>
+      <member name="down"
+              value="1"
+              c:identifier="CLUTTER_SCROLL_DOWN"
+              glib:nick="down"/>
+      <member name="left"
+              value="2"
+              c:identifier="CLUTTER_SCROLL_LEFT"
+              glib:nick="left"/>
+      <member name="right"
+              value="3"
+              c:identifier="CLUTTER_SCROLL_RIGHT"
+              glib:nick="right"/>
+    </enumeration>
+    <constant name="ScrollDown" value="269025145">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="ScrollEvent" c:type="ClutterScrollEvent" version="0.2">
+      <doc xml:whitespace="preserve">Scroll wheel (or similar device) event</doc>
+      <field name="type" writable="1">
+        <type name="EventType" c:type="ClutterEventType"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="EventFlags" c:type="ClutterEventFlags"/>
+      </field>
+      <field name="stage" writable="1">
+        <type name="Stage" c:type="ClutterStage*"/>
+      </field>
+      <field name="source" writable="1">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </field>
+      <field name="x" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="direction" writable="1">
+        <type name="ScrollDirection" c:type="ClutterScrollDirection"/>
+      </field>
+      <field name="modifier_state" writable="1">
+        <type name="ModifierType" c:type="ClutterModifierType"/>
+      </field>
+      <field name="axes" writable="1">
+        <type name="gdouble" c:type="gdouble*"/>
+      </field>
+      <field name="device" writable="1">
+        <type name="InputDevice" c:type="ClutterInputDevice*"/>
+      </field>
+    </record>
+    <constant name="ScrollUp" value="269025144">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Scroll_Lock" value="65300">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Search" value="269025051">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Select" value="65376">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="SelectButton" value="269025184">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Send" value="269025147">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Serbian_DJE" value="1713">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Serbian_DZE" value="1727">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Serbian_JE" value="1720">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Serbian_LJE" value="1721">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Serbian_NJE" value="1722">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Serbian_TSHE" value="1723">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Serbian_dje" value="1697">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Serbian_dze" value="1711">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Serbian_je" value="1704">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Serbian_lje" value="1705">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Serbian_nje" value="1706">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Serbian_tshe" value="1707">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Settings"
+           c:symbol-prefix="settings"
+           c:type="ClutterSettings"
+           version="1.4"
+           parent="GObject.Object"
+           glib:type-name="ClutterSettings"
+           glib:get-type="clutter_settings_get_type"
+           glib:type-struct="SettingsClass">
+      <doc xml:whitespace="preserve">&lt;structname&gt;ClutterSettings&lt;/structname&gt; is an opaque structure whose
+members cannot be directly accessed.</doc>
+      <function name="get_default"
+                c:identifier="clutter_settings_get_default"
+                version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the singleton instance of #ClutterSettings
+returned object is owned by Clutter and it should not be unreferenced
+directly</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the instance of #ClutterSettings. The</doc>
+          <type name="Settings" c:type="ClutterSettings*"/>
+        </return-value>
+      </function>
+      <property name="backend"
+                version="1.4"
+                readable="0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">A back pointer to the #ClutterBackend</doc>
+        <type name="Backend"/>
+      </property>
+      <property name="double-click-distance"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The maximum distance, in pixels, between button-press events that
+determines whether or not to increase the click count by 1.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="double-click-time"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The time, in milliseconds, that should elapse between button-press
+events in order to increase the click count by 1.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="font-antialias"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether or not to use antialiasing when rendering text; a value
+of 1 enables it unconditionally; a value of 0 disables it
+unconditionally; and -1 will use the system's default.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="font-dpi"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The DPI used when rendering text, as a value of 1024 * dots/inch.
+If set to -1, the system's default will be used instead</doc>
+        <type name="gint"/>
+      </property>
+      <property name="font-hint-style"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The style of the hinting used when rendering text. Valid values
+are:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;simpara&gt;hintnone&lt;/simpara&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;simpara&gt;hintslight&lt;/simpara&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;simpara&gt;hintmedium&lt;/simpara&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;simpara&gt;hintfull&lt;/simpara&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="font-hinting"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether or not to use hinting when rendering text; a value of 1
+unconditionally enables it; a value of 0 unconditionally disables
+it; and a value of -1 will use the system's default.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="font-name"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The default font name that should be used by text actors, as
+a string that can be passed to pango_font_description_from_string().</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="font-subpixel-order"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The type of sub-pixel antialiasing used when rendering text. Valid
+values are:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;simpara&gt;none&lt;/simpara&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;simpara&gt;rgb&lt;/simpara&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;simpara&gt;bgr&lt;/simpara&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;simpara&gt;vrgb&lt;/simpara&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;simpara&gt;vbgr&lt;/simpara&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;</doc>
+        <type name="utf8"/>
+      </property>
+    </class>
+    <record name="SettingsClass"
+            c:type="ClutterSettingsClass"
+            disguised="1"
+            glib:is-gtype-struct-for="Settings">
+    </record>
+    <class name="Shader"
+           c:symbol-prefix="shader"
+           c:type="ClutterShader"
+           version="0.6"
+           parent="GObject.Object"
+           glib:type-name="ClutterShader"
+           glib:get-type="clutter_shader_get_type"
+           glib:type-struct="ShaderClass">
+      <doc xml:whitespace="preserve">The #ClutterShader structure contains only private data
+and should be accessed using the provided API</doc>
+      <constructor name="new" c:identifier="clutter_shader_new" version="0.6">
+        <doc xml:whitespace="preserve">Create a new #ClutterShader instance.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #ClutterShader.</doc>
+          <type name="Shader" c:type="ClutterShader*"/>
+        </return-value>
+      </constructor>
+      <method name="compile"
+              c:identifier="clutter_shader_compile"
+              version="0.8"
+              throws="1">
+        <doc xml:whitespace="preserve">Compiles and links GLSL sources set for vertex and fragment shaders for
+a #ClutterShader. If the compilation fails and a #GError return location is
+provided the error will contain the errors from the compiler, if any.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">returns TRUE if the shader was succesfully compiled.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_cogl_fragment_shader"
+              c:identifier="clutter_shader_get_cogl_fragment_shader"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the underlying #CoglHandle for the fragment shader.
+shader, or %NULL. The handle is owned by the #ClutterShader
+and it should not be unreferenced</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglHandle for the fragment</doc>
+          <type name="Cogl.Handle" c:type="CoglHandle"/>
+        </return-value>
+      </method>
+      <method name="get_cogl_program"
+              c:identifier="clutter_shader_get_cogl_program"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the underlying #CoglHandle for the shader program.
+or %NULL. The handle is owned by the #ClutterShader and it should
+not be unreferenced</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglHandle for the shader program,</doc>
+          <type name="Cogl.Handle" c:type="CoglHandle"/>
+        </return-value>
+      </method>
+      <method name="get_cogl_vertex_shader"
+              c:identifier="clutter_shader_get_cogl_vertex_shader"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the underlying #CoglHandle for the vertex shader.
+shader, or %NULL. The handle is owned by the #ClutterShader
+and it should not be unreferenced</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglHandle for the vertex</doc>
+          <type name="Cogl.Handle" c:type="CoglHandle"/>
+        </return-value>
+      </method>
+      <method name="get_fragment_source"
+              c:identifier="clutter_shader_get_fragment_source"
+              version="0.6">
+        <doc xml:whitespace="preserve">Query the current GLSL fragment source set on @shader.
+ClutterShader object or %NULL. The returned string is owned by the
+shader object and should never be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the source of the fragment shader for this</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_is_enabled"
+              c:identifier="clutter_shader_get_is_enabled"
+              version="0.6">
+        <doc xml:whitespace="preserve">Checks whether @shader is enabled.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the shader is enabled.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_vertex_source"
+              c:identifier="clutter_shader_get_vertex_source"
+              version="0.6">
+        <doc xml:whitespace="preserve">Query the current GLSL vertex source set on @shader.
+ClutterShader object or %NULL. The returned string is owned by the
+shader object and should never be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the source of the vertex shader for this</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="is_compiled"
+              c:identifier="clutter_shader_is_compiled"
+              version="0.8">
+        <doc xml:whitespace="preserve">Checks whether @shader is is currently compiled, linked and bound
+to the GL context.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the shader is compiled, linked and ready for use.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="release"
+              c:identifier="clutter_shader_release"
+              version="0.6">
+        <doc xml:whitespace="preserve">Frees up any GL context resources held by the shader.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_fragment_source"
+              c:identifier="clutter_shader_set_fragment_source"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets the GLSL source code to be used by a #ClutterShader for the fragment
+program.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">GLSL source code.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">length of source buffer (currently ignored)</doc>
+            <type name="gssize" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_is_enabled"
+              c:identifier="clutter_shader_set_is_enabled"
+              version="0.6">
+        <doc xml:whitespace="preserve">Enables a shader. This function will attempt to compile and link
+the shader, if it isn't already.
+When @enabled is %FALSE the default state of the GL pipeline will be
+used instead.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="enabled" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The new state of the shader.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_uniform"
+              c:identifier="clutter_shader_set_uniform"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets a user configurable variable in the GLSL shader programs attached to
+a #ClutterShader.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of uniform in GLSL shader program to set.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterShaderFloat, #ClutterShaderInt or #ClutterShaderMatrix #GValue.</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_vertex_source"
+              c:identifier="clutter_shader_set_vertex_source"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets the GLSL source code to be used by a #ClutterShader for the vertex
+program.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">GLSL source code.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">length of source buffer (currently ignored)</doc>
+            <type name="gssize" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="compiled" version="0.8" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the shader is compiled and linked, ready for use
+in the GL context.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="enabled"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the shader is currently used in the GL rendering pipeline.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="fragment-source"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">GLSL source code for the fragment shader part of the shader program.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="vertex-source"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">GLSL source code for the vertex shader part of the shader
+program, if any</doc>
+        <type name="utf8"/>
+      </property>
+      <field name="parent" readable="0" private="1">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="ShaderPrivate" c:type="ClutterShaderPrivate*"/>
+      </field>
+    </class>
+    <record name="ShaderClass"
+            c:type="ClutterShaderClass"
+            glib:is-gtype-struct-for="Shader"
+            version="0.6">
+      <doc xml:whitespace="preserve">The #ClutterShaderClass structure contains only private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+    </record>
+    <class name="ShaderEffect"
+           c:symbol-prefix="shader_effect"
+           c:type="ClutterShaderEffect"
+           version="1.4"
+           parent="OffscreenEffect"
+           abstract="1"
+           glib:type-name="ClutterShaderEffect"
+           glib:get-type="clutter_shader_effect_get_type"
+           glib:type-struct="ShaderEffectClass">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;ClutterShaderEffect&lt;/structname&gt; structure contains
+only private data and should be accessed using the provided API</doc>
+      <method name="get_program"
+              c:identifier="clutter_shader_effect_get_program"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves a pointer to the program's handle
+or %COGL_INVALID_HANDLE</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to the program's handle,</doc>
+          <type name="Cogl.Handle" c:type="CoglHandle"/>
+        </return-value>
+      </method>
+      <method name="get_shader"
+              c:identifier="clutter_shader_effect_get_shader"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves a pointer to the shader's handle
+or %COGL_INVALID_HANDLE</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to the shader's handle,</doc>
+          <type name="Cogl.Handle" c:type="CoglHandle"/>
+        </return-value>
+      </method>
+      <method name="set_shader_source"
+              c:identifier="clutter_shader_effect_set_shader_source"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the source of the GLSL shader used by @effect
+This function should only be called by implementations of
+the #ClutterShaderEffect class, and not by application code.
+This function can only be called once; subsequent calls will
+yield no result.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the source was set</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the source of a GLSL shader</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_uniform"
+              c:identifier="clutter_shader_effect_set_uniform"
+              version="1.4"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets a list of values as the payload for the uniform @name inside
+the shader effect
+%G_TYPE_FLOAT, for 1 or more floating point values;
+%CLUTTER_TYPE_SHADER_INT, for a pointer to an array of integer values;
+%CLUTTER_TYPE_SHADER_FLOAT, for a pointer to an array of floating point
+values; and %CLUTTER_TYPE_SHADER_MATRIX, for a pointer to an array of
+floating point values mapping a matrix
+The number of values interepreted is defined by the @n_value
+argument, and by the @gtype argument. For instance, a uniform named
+"sampler0" and containing a single integer value is set using:
+|[
+clutter_shader_effect_set_uniform (effect, "sampler0",
+G_TYPE_INT, 1,
+0);
+]|
+While a uniform named "components" and containing a 3-elements vector
+of floating point values (a "vec3") can be set using:
+|[
+gfloat component_r, component_g, component_b;
+clutter_shader_effect_set_uniform (effect, "components",
+G_TYPE_FLOAT, 3,
+component_r,
+component_g,
+component_b);
+]|
+or can be set using:
+|[
+gfloat component_vec[3];
+clutter_shader_effect_set_uniform (effect, "components",
+CLUTTER_TYPE_SHADER_FLOAT, 3,
+component_vec);
+]|
+Finally, a uniform named "map" and containing a matrix can be set using:
+|[
+clutter_shader_effect_set_uniform (effect, "map",
+CLUTTER_TYPE_SHADER_MATRIX, 1,
+cogl_matrix_get_array (&amp;matrix));
+]|</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the uniform to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="gtype" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type of the uniform to set</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="n_values" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of values</doc>
+            <type name="gsize" c:type="gsize"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_uniform_value"
+              c:identifier="clutter_shader_effect_set_uniform_value"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets @value as the payload for the uniform @name inside the shader
+effect
+integer value; %G_TYPE_FLOAT, for a single floating point value;
+%CLUTTER_TYPE_SHADER_INT, for an array of integer values;
+%CLUTTER_TYPE_SHADER_FLOAT, for an array of floating point values;
+and %CLUTTER_TYPE_SHADER_MATRIX, for a matrix of floating point
+values. It also accepts %G_TYPE_DOUBLE for compatibility with other
+languages than C.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the uniform to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue with the value of the uniform to set</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="shader-type"
+                version="1.4"
+                readable="0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The type of shader that is used by the effect. This property
+should be set by the constructor of #ClutterShaderEffect
+sub-classes.</doc>
+        <type name="ShaderType"/>
+      </property>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="OffscreenEffect" c:type="ClutterOffscreenEffect"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="ShaderEffectPrivate" c:type="ClutterShaderEffectPrivate*"/>
+      </field>
+    </class>
+    <record name="ShaderEffectClass"
+            c:type="ClutterShaderEffectClass"
+            glib:is-gtype-struct-for="ShaderEffect"
+            version="1.4">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;ClutterShaderEffectClass&lt;/structname&gt; structure contains
+only private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="OffscreenEffectClass"
+              c:type="ClutterOffscreenEffectClass"/>
+      </field>
+      <field name="_clutter_shader1" introspectable="0">
+        <callback name="_clutter_shader1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_shader2" introspectable="0">
+        <callback name="_clutter_shader2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_shader3" introspectable="0">
+        <callback name="_clutter_shader3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_shader4" introspectable="0">
+        <callback name="_clutter_shader4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_shader5" introspectable="0">
+        <callback name="_clutter_shader5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_shader6" introspectable="0">
+        <callback name="_clutter_shader6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ShaderEffectPrivate"
+            c:type="ClutterShaderEffectPrivate"
+            disguised="1">
+    </record>
+    <enumeration name="ShaderError"
+                 version="0.6"
+                 glib:type-name="ClutterShaderError"
+                 glib:get-type="clutter_shader_error_get_type"
+                 c:type="ClutterShaderError"
+                 glib:error-quark="clutter_shader_error_quark">
+      <doc xml:whitespace="preserve">#ClutterShader error enumeration</doc>
+      <member name="no_asm"
+              value="0"
+              c:identifier="CLUTTER_SHADER_ERROR_NO_ASM"
+              glib:nick="no-asm"/>
+      <member name="no_glsl"
+              value="1"
+              c:identifier="CLUTTER_SHADER_ERROR_NO_GLSL"
+              glib:nick="no-glsl"/>
+      <member name="compile"
+              value="2"
+              c:identifier="CLUTTER_SHADER_ERROR_COMPILE"
+              glib:nick="compile"/>
+    </enumeration>
+    <record name="ShaderFloat" c:type="ClutterShaderFloat" disguised="1">
+    </record>
+    <record name="ShaderInt" c:type="ClutterShaderInt" disguised="1">
+    </record>
+    <record name="ShaderMatrix" c:type="ClutterShaderMatrix" disguised="1">
+    </record>
+    <record name="ShaderPrivate" c:type="ClutterShaderPrivate" disguised="1">
+    </record>
+    <enumeration name="ShaderType"
+                 version="1.4"
+                 glib:type-name="ClutterShaderType"
+                 glib:get-type="clutter_shader_type_get_type"
+                 c:type="ClutterShaderType">
+      <doc xml:whitespace="preserve">The type of GLSL shader program</doc>
+      <member name="vertex_shader"
+              value="0"
+              c:identifier="CLUTTER_VERTEX_SHADER"
+              glib:nick="vertex-shader"/>
+      <member name="fragment_shader"
+              value="1"
+              c:identifier="CLUTTER_FRAGMENT_SHADER"
+              glib:nick="fragment-shader"/>
+    </enumeration>
+    <constant name="Shift_L" value="65505">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Shift_Lock" value="65510">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Shift_R" value="65506">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Shop" value="269025078">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="SingleCandidate" value="65340">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Sleep" value="269025071">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="SlowKeys_Enable" value="65139">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="SnapConstraint"
+           c:symbol-prefix="snap_constraint"
+           c:type="ClutterSnapConstraint"
+           version="1.6"
+           parent="Constraint"
+           glib:type-name="ClutterSnapConstraint"
+           glib:get-type="clutter_snap_constraint_get_type"
+           glib:type-struct="SnapConstraintClass">
+      <doc xml:whitespace="preserve">&lt;structname&gt;ClutterSnapConstraint&lt;/structname&gt; is an opaque structure
+whose members cannot be directly accesses</doc>
+      <constructor name="new"
+                   c:identifier="clutter_snap_constraint_new"
+                   version="1.6">
+        <doc xml:whitespace="preserve">Creates a new #ClutterSnapConstraint that will snap a #ClutterActor
+to the @edge of @source, with the given @offset.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterSnapConstraint</doc>
+          <type name="Constraint" c:type="ClutterConstraint*"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the #ClutterActor to use as the source of the constraint, or %NULL</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="from_edge" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the edge of the actor to use in the constraint</doc>
+            <type name="SnapEdge" c:type="ClutterSnapEdge"/>
+          </parameter>
+          <parameter name="to_edge" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the edge of @source to use in the constraint</doc>
+            <type name="SnapEdge" c:type="ClutterSnapEdge"/>
+          </parameter>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the offset to apply to the constraint, in pixels</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_edges"
+              c:identifier="clutter_snap_constraint_get_edges"
+              version="1.6">
+        <doc xml:whitespace="preserve">Retrieves the edges used by the @constraint</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="from_edge"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the actor's edge, or %NULL</doc>
+            <type name="SnapEdge" c:type="ClutterSnapEdge*"/>
+          </parameter>
+          <parameter name="to_edge"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the source's edge, or %NULL</doc>
+            <type name="SnapEdge" c:type="ClutterSnapEdge*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_offset"
+              c:identifier="clutter_snap_constraint_get_offset"
+              version="1.6">
+        <doc xml:whitespace="preserve">Retrieves the offset set using clutter_snap_constraint_set_offset()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the offset, in pixels</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_source"
+              c:identifier="clutter_snap_constraint_get_source"
+              version="1.6">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterActor set using clutter_snap_constraint_set_source()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to the source actor</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="set_edges"
+              c:identifier="clutter_snap_constraint_set_edges"
+              version="1.6">
+        <doc xml:whitespace="preserve">Sets the edges to be used by the @constraint
+The @from_edge is the edge on the #ClutterActor to which @constraint
+has been added. The @to_edge is the edge of the #ClutterActor inside
+the #ClutterSnapConstraint:source property.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="from_edge" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the edge on the actor</doc>
+            <type name="SnapEdge" c:type="ClutterSnapEdge"/>
+          </parameter>
+          <parameter name="to_edge" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the edge on the source</doc>
+            <type name="SnapEdge" c:type="ClutterSnapEdge"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_offset"
+              c:identifier="clutter_snap_constraint_set_offset"
+              version="1.6">
+        <doc xml:whitespace="preserve">Sets the offset to be applied to the constraint</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the offset to apply, in pixels</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_source"
+              c:identifier="clutter_snap_constraint_set_source"
+              version="1.6">
+        <doc xml:whitespace="preserve">Sets the source #ClutterActor for the constraint</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterActor, or %NULL to unset the source</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="from-edge"
+                version="1.6"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The edge of the #ClutterActor that should be snapped</doc>
+        <type name="SnapEdge"/>
+      </property>
+      <property name="offset"
+                version="1.6"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The offset, in pixels, between #ClutterSnapConstraint:from-edge
+and #ClutterSnapConstraint:to-edge</doc>
+        <type name="gfloat"/>
+      </property>
+      <property name="source"
+                version="1.6"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #ClutterActor used as the source for the constraint</doc>
+        <type name="Actor"/>
+      </property>
+      <property name="to-edge"
+                version="1.6"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The edge of the #ClutterSnapConstraint:source that should be snapped</doc>
+        <type name="SnapEdge"/>
+      </property>
+    </class>
+    <record name="SnapConstraintClass"
+            c:type="ClutterSnapConstraintClass"
+            disguised="1"
+            glib:is-gtype-struct-for="SnapConstraint">
+    </record>
+    <enumeration name="SnapEdge"
+                 version="1.6"
+                 glib:type-name="ClutterSnapEdge"
+                 glib:get-type="clutter_snap_edge_get_type"
+                 c:type="ClutterSnapEdge">
+      <doc xml:whitespace="preserve">The edge to snap</doc>
+      <member name="top"
+              value="0"
+              c:identifier="CLUTTER_SNAP_EDGE_TOP"
+              glib:nick="top"/>
+      <member name="right"
+              value="1"
+              c:identifier="CLUTTER_SNAP_EDGE_RIGHT"
+              glib:nick="right"/>
+      <member name="bottom"
+              value="2"
+              c:identifier="CLUTTER_SNAP_EDGE_BOTTOM"
+              glib:nick="bottom"/>
+      <member name="left"
+              value="3"
+              c:identifier="CLUTTER_SNAP_EDGE_LEFT"
+              glib:nick="left"/>
+    </enumeration>
+    <constant name="Spell" value="269025148">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="SplitScreen" value="269025149">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Stage"
+           c:symbol-prefix="stage"
+           c:type="ClutterStage"
+           version="0.1"
+           parent="Group"
+           glib:type-name="ClutterStage"
+           glib:get-type="clutter_stage_get_type"
+           glib:type-struct="StageClass">
+      <doc xml:whitespace="preserve">The #ClutterStage structure contains only private data
+and should be accessed using the provided API</doc>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Animatable"/>
+      <implements name="Container"/>
+      <implements name="Scriptable"/>
+      <constructor name="new" c:identifier="clutter_stage_new" version="0.8">
+        <doc xml:whitespace="preserve">Creates a new, non-default stage. A non-default stage is a new
+top-level actor which can be used as another container. It works
+exactly like the default stage, but while clutter_stage_get_default()
+will always return the same instance, you will have to keep a pointer
+to any #ClutterStage returned by clutter_stage_new().
+The ability to support multiple stages depends on the current
+backend. Use clutter_feature_available() and
+%CLUTTER_FEATURE_STAGE_MULTIPLE to check at runtime whether a
+backend supports multiple stages.
+not support multiple stages. Use clutter_actor_destroy() to
+programmatically close the returned stage.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new stage, or %NULL if the default backend does</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </constructor>
+      <function name="get_default" c:identifier="clutter_stage_get_default">
+        <doc xml:whitespace="preserve">Returns the main stage. The default #ClutterStage is a singleton,
+so the stage will be created the first time this function is
+called (typically, inside clutter_init()); all the subsequent
+calls to clutter_stage_get_default() will return the same instance.
+Clutter guarantess the existence of the default stage.
+destroy or unref the returned actor.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the main #ClutterStage.  You should never</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </function>
+      <virtual-method name="activate">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="deactivate">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="delete_event">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="ClutterEvent*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="fullscreen">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="unfullscreen">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <method name="ensure_current"
+              c:identifier="clutter_stage_ensure_current"
+              version="0.8">
+        <doc xml:whitespace="preserve">This function essentially makes sure the right GL context is
+current for the passed stage. It is not intended to
+be used by applications.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="ensure_redraw"
+              c:identifier="clutter_stage_ensure_redraw"
+              version="1.0">
+        <doc xml:whitespace="preserve">Ensures that @stage is redrawn
+used when embedding a #ClutterStage into a toolkit with
+another windowing system, like GTK+.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="ensure_viewport"
+              c:identifier="clutter_stage_ensure_viewport"
+              version="1.0">
+        <doc xml:whitespace="preserve">Ensures that the GL viewport is updated with the current
+stage window size.
+This function will queue a redraw of @stage.
+This function should not be called by applications; it is used
+when embedding a #ClutterStage into a toolkit with another
+windowing system, like GTK+.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="event" c:identifier="clutter_stage_event" version="0.4">
+        <doc xml:whitespace="preserve">This function is used to emit an event on the main stage.
+You should rarely need to use this function, except for
+synthetised events.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the return value from the signal emission</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterEvent</doc>
+            <type name="Event" c:type="ClutterEvent*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_accept_focus"
+              c:identifier="clutter_stage_get_accept_focus"
+              version="1.6">
+        <doc xml:whitespace="preserve">Retrieves the value set with clutter_stage_set_accept_focus().
+otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #ClutterStage should accept focus, and %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_actor_at_pos"
+              c:identifier="clutter_stage_get_actor_at_pos">
+        <doc xml:whitespace="preserve">Checks the scene at the coordinates @x and @y and returns a pointer
+to the #ClutterActor at those coordinates.
+By using @pick_mode it is possible to control which actors will be
+painted and thus available.
+if any</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the actor at the specified coordinates,</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pick_mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">how the scene graph should be painted</doc>
+            <type name="PickMode" c:type="ClutterPickMode"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate to check</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate to check</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_color" c:identifier="clutter_stage_get_color">
+        <doc xml:whitespace="preserve">Retrieves the stage color.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for a #ClutterColor</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_fog"
+              c:identifier="clutter_stage_get_fog"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the current depth cueing settings from the stage.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fog" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for a #ClutterFog structure</doc>
+            <type name="Fog" c:type="ClutterFog*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_fullscreen"
+              c:identifier="clutter_stage_get_fullscreen"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves whether the stage is full screen or not</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the stage is full screen</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_key_focus"
+              c:identifier="clutter_stage_get_key_focus"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the actor that is currently under key focus.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the actor with key focus, or the stage</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <method name="get_minimum_size"
+              c:identifier="clutter_stage_get_minimum_size"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the minimum size for a stage window as set using
+clutter_stage_set_minimum_size().
+The returned size may not correspond to the actual minimum size and
+it is specific to the #ClutterStage implementation inside the
+Clutter backend</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the minimum width, in pixels, or %NULL</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the minimum height, in pixels, or %NULL</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_no_clear_hint"
+              c:identifier="clutter_stage_get_no_clear_hint"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the hint set with clutter_stage_set_no_clear_hint()
+cycle, and %FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the stage should not clear itself on every paint</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_perspective"
+              c:identifier="clutter_stage_get_perspective">
+        <doc xml:whitespace="preserve">Retrieves the stage perspective.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="perspective"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">return location for a #ClutterPerspective</doc>
+            <type name="Perspective" c:type="ClutterPerspective*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_throttle_motion_events"
+              c:identifier="clutter_stage_get_throttle_motion_events"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the value set with clutter_stage_set_throttle_motion_events()
+and %FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the motion events are being throttled,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_title"
+              c:identifier="clutter_stage_get_title"
+              version="0.4">
+        <doc xml:whitespace="preserve">Gets the stage title.
+returned string is owned by the actor and should not
+be modified or freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">pointer to the title string for the stage. The</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_use_alpha"
+              c:identifier="clutter_stage_get_use_alpha"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the value set using clutter_stage_set_use_alpha()
+alpha channel of the stage color</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the stage should honour the opacity and the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_use_fog"
+              c:identifier="clutter_stage_get_use_fog"
+              version="0.6">
+        <doc xml:whitespace="preserve">Gets whether the depth cueing effect is enabled on @stage.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the depth cueing effect is enabled</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_user_resizable"
+              c:identifier="clutter_stage_get_user_resizable"
+              version="0.4">
+        <doc xml:whitespace="preserve">Retrieves the value set with clutter_stage_set_user_resizable().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the stage is resizable by the user.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="hide_cursor"
+              c:identifier="clutter_stage_hide_cursor"
+              version="0.4">
+        <doc xml:whitespace="preserve">Makes the cursor invisible on the stage window</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="is_default"
+              c:identifier="clutter_stage_is_default"
+              version="0.8">
+        <doc xml:whitespace="preserve">Checks if @stage is the default stage, or an instance created using
+clutter_stage_new() but internally using the same implementation.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the passed stage is the default one</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="queue_redraw"
+              c:identifier="clutter_stage_queue_redraw"
+              version="0.8">
+        <doc xml:whitespace="preserve">Queues a redraw for the passed stage.
+&lt;note&gt;Applications should call clutter_actor_queue_redraw() and not
+this function.&lt;/note&gt;
+&lt;note&gt;This function is just a wrapper for clutter_actor_queue_redraw()
+and should probably go away.&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="read_pixels" c:identifier="clutter_stage_read_pixels">
+        <doc xml:whitespace="preserve">Makes a screenshot of the stage in RGBA 8bit data, returns a
+linear buffer with @width * 4 as rowstride.
+The alpha data contained in the returned buffer is driver-dependent,
+and not guaranteed to hold any sensible value.
+or %NULL if the read failed. Use g_free() on the returned data
+to release the resources it has allocated.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to newly allocated memory with the buffer</doc>
+          <type name="guint8" c:type="guchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">x coordinate of the first pixel that is read from stage</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">y coordinate of the first pixel that is read from stage</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Width dimention of pixels to be read, or -1 for the entire stage width</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Height dimention of pixels to be read, or -1 for the entire stage height</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_accept_focus"
+              c:identifier="clutter_stage_set_accept_focus"
+              version="1.6">
+        <doc xml:whitespace="preserve">Sets whether the @stage should accept the key focus when shown.
+This function should be called before showing @stage using
+clutter_actor_show().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="accept_focus" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to accept focus on show</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_color" c:identifier="clutter_stage_set_color">
+        <doc xml:whitespace="preserve">Sets the stage color.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #ClutterColor</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_fog"
+              c:identifier="clutter_stage_set_fog"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets the fog (also known as "depth cueing") settings for the @stage.
+A #ClutterStage will only use a linear fog progression, which
+depends solely on the distance from the viewer. The cogl_set_fog()
+function in COGL exposes more of the underlying implementation,
+and allows changing the for progression function. It can be directly
+used by disabling the #ClutterStage:use-fog property and connecting
+a signal handler to the #ClutterActor::paint signal on the @stage,
+like:
+|[
+clutter_stage_set_use_fog (stage, FALSE);
+g_signal_connect (stage, "paint", G_CALLBACK (on_stage_paint), NULL);
+]|
+The paint signal handler will call cogl_set_fog() with the
+desired settings:
+|[
+static void
+on_stage_paint (ClutterActor *actor)
+{
+ClutterColor stage_color = { 0, };
+CoglColor fog_color = { 0, };
+/&amp;ast; set the fog color to the stage background color &amp;ast;/
+clutter_stage_get_color (CLUTTER_STAGE (actor), &amp;amp;stage_color);
+cogl_color_init_from_4ub (&amp;amp;fog_color,
+stage_color.red,
+stage_color.green,
+stage_color.blue,
+stage_color.alpha);
+/&amp;ast; enable fog &amp;ast;/
+cogl_set_fog (&amp;amp;fog_color,
+COGL_FOG_MODE_EXPONENTIAL, /&amp;ast; mode &amp;ast;/
+0.5,                       /&amp;ast; density &amp;ast;/
+5.0, 30.0);                /&amp;ast; z_near and z_far &amp;ast;/
+}
+]|
+&lt;note&gt;The fogging functions only work correctly when the visible actors use
+unmultiplied alpha colors. By default Cogl will premultiply textures and
+cogl_set_source_color() will premultiply colors, so unless you explicitly
+load your textures requesting an unmultiplied internal format and use
+cogl_material_set_color() you can only use fogging with fully opaque actors.
+Support for premultiplied colors will improve in the future when we can
+depend on fragment shaders.&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fog" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterFog structure</doc>
+            <type name="Fog" c:type="ClutterFog*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_fullscreen"
+              c:identifier="clutter_stage_set_fullscreen"
+              version="1.0">
+        <doc xml:whitespace="preserve">Asks to place the stage window in the fullscreen or unfullscreen
+states.
+afterward, because other entities (e.g. the user or window manager)
+could unfullscreen it again, and not all window managers honor
+requests to fullscreen windows.
+If you want to receive notification of the fullscreen state you
+should either use the #ClutterStage::fullscreen and
+#ClutterStage::unfullscreen signals, or use the notify signal
+for the #ClutterStage:fullscreen-set property</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fullscreen" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to to set the stage fullscreen</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_key_focus"
+              c:identifier="clutter_stage_set_key_focus"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets the key focus on @actor. An actor with key focus will receive
+all the key events. If @actor is %NULL, the stage will receive
+focus.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the actor to set key focus to, or %NULL</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_minimum_size"
+              c:identifier="clutter_stage_set_minimum_size"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets the minimum size for a stage window, if the default backend
+uses #ClutterStage inside a window
+This is a convenience function, and it is equivalent to setting the
+#ClutterActor:min-width and #ClutterActor:min-height on @stage
+If the current size of @stage is smaller than the minimum size, the
+This function has no effect if @stage is fullscreen</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">width, in pixels</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">height, in pixels</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_no_clear_hint"
+              c:identifier="clutter_stage_set_no_clear_hint"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets whether the @stage should clear itself at the beginning
+of each paint cycle or not.
+Clearing the #ClutterStage can be a costly operation, especially
+if the stage is always covered - for instance, in a full-screen
+video player or in a game with a background texture.
+&lt;note&gt;&lt;para&gt;This setting is a hint; Clutter might discard this
+hint depending on its internal state.&lt;/para&gt;&lt;/note&gt;
+&lt;warning&gt;&lt;para&gt;If parts of the stage are visible and you disable
+clearing you might end up with visual artifacts while painting the
+contents of the stage.&lt;/para&gt;&lt;/warning&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="no_clear" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the @stage should not clear itself on every repaint cycle</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_perspective"
+              c:identifier="clutter_stage_set_perspective">
+        <doc xml:whitespace="preserve">Sets the stage perspective.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="perspective" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #ClutterPerspective</doc>
+            <type name="Perspective" c:type="ClutterPerspective*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_throttle_motion_events"
+              c:identifier="clutter_stage_set_throttle_motion_events"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets whether motion events received between redraws should
+be throttled or not. If motion events are throttled, those
+events received by the windowing system between redraws will
+be compressed so that only the last event will be propagated
+to the @stage and its actors.
+This function should only be used if you want to have all
+the motion events delivered to your application code.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="throttle" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to throttle motion events</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_title"
+              c:identifier="clutter_stage_set_title"
+              version="0.4">
+        <doc xml:whitespace="preserve">Sets the stage title.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="title" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A utf8 string for the stage windows title.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_use_alpha"
+              c:identifier="clutter_stage_set_use_alpha"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets whether the @stage should honour the #ClutterActor:opacity and
+the alpha channel of the #ClutterStage:color</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the stage should honour the opacity or the alpha channel of the stage color</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_use_fog"
+              c:identifier="clutter_stage_set_use_fog"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets whether the depth cueing effect on the stage should be enabled
+or not.
+Depth cueing is a 3D effect that makes actors farther away from the
+viewing point less opaque, by fading them with the stage color.
+The parameters of the GL fog used can be changed using the
+clutter_stage_set_fog() function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fog" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE for enabling the depth cueing effect</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_user_resizable"
+              c:identifier="clutter_stage_set_user_resizable"
+              version="0.4">
+        <doc xml:whitespace="preserve">Sets if the stage is resizable by user interaction (e.g. via
+window manager controls)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="resizable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the stage should be user resizable.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="show_cursor" c:identifier="clutter_stage_show_cursor">
+        <doc xml:whitespace="preserve">Shows the cursor on the stage window</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="accept-focus"
+                version="1.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the #ClutterStage should accept key focus when shown.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="color" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The color of the main stage.</doc>
+        <type name="Color"/>
+      </property>
+      <property name="cursor-visible" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the mouse pointer should be visible</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="fog"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The settings for the GL "fog", used only if #ClutterStage:use-fog
+is set to %TRUE</doc>
+        <type name="Fog"/>
+      </property>
+      <property name="fullscreen-set" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="key-focus"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #ClutterActor that will receive key events from the underlying
+windowing system.
+If %NULL, the #ClutterStage will receive the events.</doc>
+        <type name="Actor"/>
+      </property>
+      <property name="no-clear-hint"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether or not the #ClutterStage should clear its contents
+before each paint cycle.
+See clutter_stage_set_no_clear_hint() for further information.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="offscreen" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the stage should be rendered in an offscreen buffer.
+&lt;warning&gt;&lt;para&gt;Not every backend supports redirecting the
+stage to an offscreen buffer. This property might not work
+and it might be deprecated at any later date.&lt;/para&gt;&lt;/warning&gt;</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="perspective"
+                version="0.8.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The parameters used for the perspective projection from 3D
+coordinates to 2D</doc>
+        <type name="Perspective"/>
+      </property>
+      <property name="title"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The stage's title - usually displayed in stage windows title decorations.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="use-alpha"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the #ClutterStage should honour the alpha component of the
+#ClutterStage:color property when painting. If Clutter is run under
+a compositing manager this will result in the stage being blended
+with the underlying window(s)</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="use-fog"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the stage should use a linear GL "fog" in creating the
+depth-cueing effect, to enhance the perception of depth by fading
+actors farther from the viewpoint.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="user-resizable"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the stage is resizable via user interaction.</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="Group" c:type="ClutterGroup"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="StagePrivate" c:type="ClutterStagePrivate*"/>
+      </field>
+      <glib:signal name="activate" version="0.6">
+        <doc xml:whitespace="preserve">The ::activate signal is emitted when the stage receives key focus
+from the underlying window system.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="deactivate" version="0.6">
+        <doc xml:whitespace="preserve">The ::activate signal is emitted when the stage loses key focus
+from the underlying window system.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="delete-event" version="1.2">
+        <doc xml:whitespace="preserve">The ::delete-event signal is emitted when the user closes a
+#ClutterStage window using the window controls.
+Clutter by default will call clutter_main_quit() if @stage is
+the default stage, and clutter_actor_destroy() for any other
+stage.
+It is possible to override the default behaviour by connecting
+a new handler and returning %TRUE there.
+&lt;note&gt;This signal is emitted only on Clutter backends that
+embed #ClutterStage in native windows. It is not emitted for
+backends that use a static frame buffer.&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterEvent of type %CLUTTER_DELETE</doc>
+            <type name="Event"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="fullscreen" version="0.6">
+        <doc xml:whitespace="preserve">The ::fullscreen signal is emitted when the stage is made fullscreen.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="unfullscreen" version="0.6">
+        <doc xml:whitespace="preserve">The ::unfullscreen signal is emitted when the stage leaves a fullscreen
+state.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="StageClass"
+            c:type="ClutterStageClass"
+            glib:is-gtype-struct-for="Stage"
+            version="0.1">
+      <doc xml:whitespace="preserve">The #ClutterStageClass structure contains only private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="GroupClass" c:type="ClutterGroupClass"/>
+      </field>
+      <field name="fullscreen">
+        <callback name="fullscreen">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unfullscreen">
+        <callback name="unfullscreen">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="activate">
+        <callback name="activate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="deactivate">
+        <callback name="deactivate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="delete_event">
+        <callback name="delete_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Event" c:type="ClutterEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_padding_dummy" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="31">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <class name="StageManager"
+           c:symbol-prefix="stage_manager"
+           c:type="ClutterStageManager"
+           version="1.0"
+           parent="GObject.Object"
+           glib:type-name="ClutterStageManager"
+           glib:get-type="clutter_stage_manager_get_type"
+           glib:type-struct="StageManagerClass">
+      <doc xml:whitespace="preserve">The #ClutterStageManager structure is private.</doc>
+      <function name="get_default"
+                c:identifier="clutter_stage_manager_get_default"
+                version="0.8">
+        <doc xml:whitespace="preserve">Returns the default #ClutterStageManager.
+object is owned by Clutter and you should not reference or unreference it.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the default stage manager instance. The returned</doc>
+          <type name="StageManager" c:type="ClutterStageManager*"/>
+        </return-value>
+      </function>
+      <virtual-method name="stage_added">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stage" transfer-ownership="none">
+            <type name="Stage" c:type="ClutterStage*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="stage_removed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stage" transfer-ownership="none">
+            <type name="Stage" c:type="ClutterStage*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_default_stage"
+              c:identifier="clutter_stage_manager_get_default_stage"
+              version="0.8">
+        <doc xml:whitespace="preserve">Returns the default #ClutterStage.
+is owned by Clutter and you should never reference or unreference it</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the default stage. The returned object</doc>
+          <type name="Stage" c:type="ClutterStage*"/>
+        </return-value>
+      </method>
+      <method name="list_stages"
+              c:identifier="clutter_stage_manager_list_stages"
+              version="0.8">
+        <doc xml:whitespace="preserve">Lists all currently used stages.
+allocated list of #ClutterStage objects. Use g_slist_free() to
+deallocate it when done.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a newly</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="Stage"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="peek_stages"
+              c:identifier="clutter_stage_manager_peek_stages"
+              version="1.0">
+        <doc xml:whitespace="preserve">Lists all currently used stages.
+to the internal list of #ClutterStage objects. The returned list
+is owned by the #ClutterStageManager and should never be modified
+or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="Stage"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="set_default_stage"
+              c:identifier="clutter_stage_manager_set_default_stage"
+              version="0.8"
+              deprecated="Calling this function has no effect"
+              deprecated-version="1.2">
+        <doc xml:whitespace="preserve">Sets @stage as the default stage.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stage" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterStage</doc>
+            <type name="Stage" c:type="ClutterStage*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="default-stage" version="0.8" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The default stage used by Clutter.</doc>
+        <type name="Stage"/>
+      </property>
+      <glib:signal name="stage-added" version="0.8">
+        <doc xml:whitespace="preserve">The ::stage-added signal is emitted each time a new #ClutterStage
+has been added to the stage manager.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="stage" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the added stage</doc>
+            <type name="Stage"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="stage-removed" version="0.8">
+        <doc xml:whitespace="preserve">The ::stage-removed signal is emitted each time a #ClutterStage
+has been removed from the stage manager.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="stage" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the removed stage</doc>
+            <type name="Stage"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="StageManagerClass"
+            c:type="ClutterStageManagerClass"
+            glib:is-gtype-struct-for="StageManager"
+            version="1.0">
+      <doc xml:whitespace="preserve">The #ClutterStageManagerClass structure contains only private data
+and should be accessed using the provided API</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="stage_added">
+        <callback name="stage_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_manager" transfer-ownership="none">
+              <type name="StageManager" c:type="ClutterStageManager*"/>
+            </parameter>
+            <parameter name="stage" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="stage_removed">
+        <callback name="stage_removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_manager" transfer-ownership="none">
+              <type name="StageManager" c:type="ClutterStageManager*"/>
+            </parameter>
+            <parameter name="stage" transfer-ownership="none">
+              <type name="Stage" c:type="ClutterStage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <record name="StagePrivate" c:type="ClutterStagePrivate" disguised="1">
+    </record>
+    <bitfield name="StageState"
+              version="0.4"
+              glib:type-name="ClutterStageState"
+              glib:get-type="clutter_stage_state_get_type"
+              c:type="ClutterStageState">
+      <doc xml:whitespace="preserve">Stage state masks</doc>
+      <member name="fullscreen"
+              value="2"
+              c:identifier="CLUTTER_STAGE_STATE_FULLSCREEN"
+              glib:nick="fullscreen"/>
+      <member name="offscreen"
+              value="4"
+              c:identifier="CLUTTER_STAGE_STATE_OFFSCREEN"
+              glib:nick="offscreen"/>
+      <member name="activated"
+              value="8"
+              c:identifier="CLUTTER_STAGE_STATE_ACTIVATED"
+              glib:nick="activated"/>
+    </bitfield>
+    <record name="StageStateEvent"
+            c:type="ClutterStageStateEvent"
+            version="0.2">
+      <doc xml:whitespace="preserve">Event signalling a change in the #ClutterStage state.</doc>
+      <field name="type" writable="1">
+        <type name="EventType" c:type="ClutterEventType"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="EventFlags" c:type="ClutterEventFlags"/>
+      </field>
+      <field name="stage" writable="1">
+        <type name="Stage" c:type="ClutterStage*"/>
+      </field>
+      <field name="source" writable="1">
+        <type name="Actor" c:type="ClutterActor*"/>
+      </field>
+      <field name="changed_mask" writable="1">
+        <type name="StageState" c:type="ClutterStageState"/>
+      </field>
+      <field name="new_state" writable="1">
+        <type name="StageState" c:type="ClutterStageState"/>
+      </field>
+    </record>
+    <interface name="StageWindow"
+               c:symbol-prefix="stage_window"
+               c:type="ClutterStageWindow"
+               version="0.8"
+               introspectable="0"
+               glib:type-name="ClutterStageWindow"
+               glib:get-type="clutter_stage_window_get_type"
+               glib:type-struct="StageWindowIface">
+      <doc xml:whitespace="preserve">&lt;structname&gt;ClutterStageWindow&lt;/structname&gt; is an opaque structure
+whose members should not be accessed directly</doc>
+      <virtual-method name="add_redraw_clip">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stage_rectangle" transfer-ownership="none">
+            <type name="Geometry" c:type="ClutterGeometry*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_geometry">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="geometry" transfer-ownership="none">
+            <type name="Geometry" c:type="ClutterGeometry*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_pending_swaps">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_wrapper">
+        <return-value>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="has_redraw_clips">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="hide">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="ignoring_redraw_clips">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="realize">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="redraw">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="resize">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_accept_focus">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="accept_focus" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_cursor_visible">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cursor_visible" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_fullscreen">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="is_fullscreen" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_title">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="title" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_user_resizable">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="is_resizable" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="show">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="do_raise" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="unrealize">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+    </interface>
+    <record name="StageWindowIface"
+            c:type="ClutterStageWindowIface"
+            glib:is-gtype-struct-for="StageWindow"
+            version="0.8"
+            introspectable="0">
+      <doc xml:whitespace="preserve">The interface implemented by backends for stage windows</doc>
+      <field name="parent_iface" readable="0" private="1">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="get_wrapper">
+        <callback name="get_wrapper" introspectable="0">
+          <return-value>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_title">
+        <callback name="set_title" introspectable="0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+            <parameter name="title" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_fullscreen">
+        <callback name="set_fullscreen" introspectable="0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+            <parameter name="is_fullscreen" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_cursor_visible">
+        <callback name="set_cursor_visible" introspectable="0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+            <parameter name="cursor_visible" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_user_resizable">
+        <callback name="set_user_resizable" introspectable="0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+            <parameter name="is_resizable" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="realize">
+        <callback name="realize" introspectable="0">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unrealize">
+        <callback name="unrealize" introspectable="0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="show">
+        <callback name="show" introspectable="0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+            <parameter name="do_raise" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="hide">
+        <callback name="hide" introspectable="0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="resize">
+        <callback name="resize" introspectable="0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_geometry">
+        <callback name="get_geometry" introspectable="0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+            <parameter name="geometry" transfer-ownership="none">
+              <type name="Geometry" c:type="ClutterGeometry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_pending_swaps">
+        <callback name="get_pending_swaps" introspectable="0">
+          <return-value transfer-ownership="none">
+            <type name="gint" c:type="int"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_redraw_clip">
+        <callback name="add_redraw_clip" introspectable="0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+            <parameter name="stage_rectangle" transfer-ownership="none">
+              <type name="Geometry" c:type="ClutterGeometry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="has_redraw_clips">
+        <callback name="has_redraw_clips" introspectable="0">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="ignoring_redraw_clips">
+        <callback name="ignoring_redraw_clips" introspectable="0">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_accept_focus">
+        <callback name="set_accept_focus" introspectable="0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+            <parameter name="accept_focus" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="redraw">
+        <callback name="redraw" introspectable="0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="stage_window" transfer-ownership="none">
+              <type name="StageWindow" c:type="ClutterStageWindow*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <constant name="Standby" value="269025040">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Start" value="269025050">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="State"
+           c:symbol-prefix="state"
+           c:type="ClutterState"
+           version="1.4"
+           parent="GObject.Object"
+           glib:type-name="ClutterState"
+           glib:get-type="clutter_state_get_type"
+           glib:type-struct="StateClass">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;ClutterState&lt;/structname&gt; structure contains only
+private data and should be accessed using the provided API</doc>
+      <implements name="Scriptable"/>
+      <constructor name="new" c:identifier="clutter_state_new">
+        <doc xml:whitespace="preserve">Creates a new #ClutterState</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly create #ClutterState instance</doc>
+          <type name="State" c:type="ClutterState*"/>
+        </return-value>
+      </constructor>
+      <virtual-method name="completed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <method name="get_animator"
+              c:identifier="clutter_state_get_animator"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterAnimator that is being used for transitioning
+between the two states, if any has been set</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterAnimator instance, or %NULL</doc>
+          <type name="Animator" c:type="ClutterAnimator*"/>
+        </return-value>
+        <parameters>
+          <parameter name="source_state_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a source state</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="target_state_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a target state</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_duration"
+              c:identifier="clutter_state_get_duration"
+              version="1.4">
+        <doc xml:whitespace="preserve">Queries the duration used for transitions between a source and
+target state pair
+The semantics for the query are the same as the semantics used for
+setting the duration with clutter_state_set_duration()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the duration, in milliseconds</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="source_state_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the name of the source state to get the duration of, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="target_state_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the name of the source state to get the duration of, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_keys"
+              c:identifier="clutter_state_get_keys"
+              version="1.4">
+        <doc xml:whitespace="preserve">Returns a list of pointers to opaque structures with accessor functions
+that describe the keys added to an animator.
+newly allocated #GList of #ClutterStateKey&lt;!-- --&gt;s. The contents of
+the returned list are owned by the #ClutterState and should not be
+modified or freed. Use g_list_free() to free the resources allocated
+by the returned list when done using it</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="StateKey"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="source_state_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the source transition name to query, or %NULL for all source states</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="target_state_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the target transition name to query, or %NULL for all target states</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="object" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the specific object instance to list keys for, or %NULL for all managed objects</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the property name to search for, or %NULL for all properties.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_state"
+              c:identifier="clutter_state_get_state"
+              version="1.4">
+        <doc xml:whitespace="preserve">Queries the currently set target state.
+During a transition this function will return the target of the transition.
+This function is useful when called from handlers of the
+#ClutterState::completed signal.
+is owned by the #ClutterState and should not be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string containing the target state. The returned string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_states"
+              c:identifier="clutter_state_get_states"
+              version="1.4">
+        <doc xml:whitespace="preserve">Gets a list of all the state names managed by this #ClutterState.
+#GList of state names. The contents of the returned #GList are owned
+by the #ClutterState and should not be modified or freed. Use
+g_list_free() to free the resources allocated by the returned list when
+done using it</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a newly allocated</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="utf8"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_timeline"
+              c:identifier="clutter_state_get_timeline"
+              version="1.4">
+        <doc xml:whitespace="preserve">Gets the timeline driving the #ClutterState
+the state change animations. The returned timeline is owned
+by the #ClutterState and it should not be unreferenced directly</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #ClutterTimeline that drives</doc>
+          <type name="Timeline" c:type="ClutterTimeline*"/>
+        </return-value>
+      </method>
+      <method name="remove_key"
+              c:identifier="clutter_state_remove_key"
+              version="1.4">
+        <doc xml:whitespace="preserve">Removes all keys matching the search criteria passed in arguments.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="source_state_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the source state name to query, or %NULL for all source states</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="target_state_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the target state name to query, or %NULL for all target states</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="object" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the specific object instance to list keys for, or %NULL for all managed objects</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the property name to search for, or %NULL for all properties.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set"
+              c:identifier="clutter_state_set"
+              version="1.4"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Adds multiple keys to a named state of a #ClutterState instance, specifying
+the easing mode and value a given property of an object should have at a
+given progress of the animation.
+The mode specified is the easing mode used when going to from the previous
+key to the specified key.
+For instance, the code below:
+|[
+clutter_state_set (state, NULL, "hover",
+button, "opacity", CLUTTER_LINEAR, 255,
+button, "scale-x", CLUTTER_EASE_OUT_CUBIC, 1.2,
+button, "scale-y", CLUTTER_EASE_OUT_CUBIC, 1.2,
+NULL);
+]|
+will create a transition from any state (a @source_state_name of NULL is
+treated as a wildcard) and a state named "hover"; the
+&lt;emphasis&gt;button&lt;/emphasis&gt; object will have the #ClutterActor:opacity
+property animated to a value of 255 using %CLUTTER_LINEAR as the animation
+mode, and the #ClutterActor:scale-x and #ClutterActor:scale-y properties
+animated to a value of 1.2 using %CLUTTER_EASE_OUT_CUBIC as the animation
+mode. To change the state (and start the transition) you can use the
+clutter_state_set_state() function:
+|[
+clutter_state_set_state (state, "hover");
+]|
+If a given object, state_name, property tuple already exist in the
+#ClutterState instance, then the mode and value will be replaced with
+the new specified values.
+If a property name is prefixed with "delayed::" two additional
+to pause before transitioning and a similar value to pause after
+transitioning, e.g.:
+|[
+clutter_state_set (state, "hover", "toggled",
+button, "delayed::scale-x", CLUTTER_LINEAR, 1.0, 0.2, 0.2,
+button, "delayed::scale-y", CLUTTER_LINEAR, 1.0, 0.2, 0.2,
+NULL);
+]|
+will pause for 20% of the duration of the transition before animating,
+and 20% of the duration after animating.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="source_state_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the source state keys are being added for</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="target_state_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the target state keys are being added for</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="first_object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GObject</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="first_property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a property of @first_object to specify a key for</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="first_mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the id of the alpha function to use</doc>
+            <type name="gulong" c:type="gulong"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_animator"
+              c:identifier="clutter_state_set_animator"
+              version="1.4">
+        <doc xml:whitespace="preserve">Specifies a #ClutterAnimator to be used when transitioning between
+the two named states.
+The @animator allows specifying a transition between the state that is
+more elaborate than the basic transitions allowed by the tweening of
+properties defined in the #ClutterState keys.
+If @animator is %NULL it will unset an existing animator.
+#ClutterState will take a reference on the passed @animator, if any</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="source_state_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a source state</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="target_state_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a target state</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="animator" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #ClutterAnimator instance, or %NULL to unset an existing #ClutterAnimator</doc>
+            <type name="Animator" c:type="ClutterAnimator*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_duration"
+              c:identifier="clutter_state_set_duration"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the duration of a transition.
+If both state names are %NULL the default duration for @state is set.
+If only @target_state_name is specified, the passed @duration becomes
+the default duration for transitions to the target state.
+If both states names are specified, the passed @duration only applies
+to the specified transition.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="source_state_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the name of the source state, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="target_state_name"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the name of the target state, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="duration" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the duration of the transition, in milliseconds</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_key"
+              c:identifier="clutter_state_set_key"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets one specific end key for a state_name, object, property_name
+combination.
+chaining of multiple calls</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #ClutterState instance, allowing</doc>
+          <type name="State" c:type="ClutterState*"/>
+        </return-value>
+        <parameters>
+          <parameter name="source_state_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the source transition to specify transition for or NULL to specify the default fallback when a more specific source_state doesn't exist.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="target_state_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the transition to set a key value for.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GObject to set a key for</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the property to set a key for</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the id of the alpha function to use</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value for property_name of object in state_name</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="pre_delay" transfer-ownership="none">
+            <doc xml:whitespace="preserve">relative time of the transition to be idle in the beginning of the transition</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="post_delay" transfer-ownership="none">
+            <doc xml:whitespace="preserve">relative time of the transition to be idle in the end of the transition</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_state"
+              c:identifier="clutter_state_set_state"
+              version="1.4">
+        <doc xml:whitespace="preserve">Change the current state of #ClutterState to @target_state_name.
+The state will animate during its transition, see
+#clutter_state_warp_to_state for animation-free state switching.
+Setting a %NULL state will stop the current animation and unset
+the current state, but keys will be left intact.
+state transition. The returned timeline is owned by the #ClutterState
+and it should not be unreferenced</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #ClutterTimeline that drives the</doc>
+          <type name="Timeline" c:type="ClutterTimeline*"/>
+        </return-value>
+        <parameters>
+          <parameter name="target_state_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the state to transition to</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="warp_to_state"
+              c:identifier="clutter_state_warp_to_state"
+              version="1.4">
+        <doc xml:whitespace="preserve">Change to the specified target state immediately with no animation.
+See clutter_state_set_state().
+state transition. The returned timeline is owned by the #ClutterState
+and it should not be unreferenced</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #ClutterTimeline that drives the</doc>
+          <type name="Timeline" c:type="ClutterTimeline*"/>
+        </return-value>
+        <parameters>
+          <parameter name="target_state_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the state to transition to</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="duration" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Default duration used if an duration has not been specified for a specific
+source/target state pair. The values is in milliseconds.</doc>
+        <type name="guint"/>
+      </property>
+      <property name="state" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The currently set target state, setting it causes the
+state machine to transition to the new state, use
+clutter_state_warp_to_state() to change state without
+a transition.</doc>
+        <type name="utf8"/>
+      </property>
+      <field name="parent" readable="0" private="1">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="StatePrivate" c:type="ClutterStatePrivate*"/>
+      </field>
+      <glib:signal name="completed" version="1.4">
+        <doc xml:whitespace="preserve">The ::completed signal is emitted when a #ClutterState reaches
+the target state specified by clutter_state_set_state() or
+clutter_state_warp_to_state().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="StateClass"
+            c:type="ClutterStateClass"
+            glib:is-gtype-struct-for="State"
+            version="1.4">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;ClutterStateClass&lt;/structname&gt; structure contains
+only private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="completed">
+        <callback name="completed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="state" transfer-ownership="none">
+              <type name="State" c:type="ClutterState*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_padding_dummy" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="8">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <record name="StateKey"
+            c:type="ClutterStateKey"
+            version="1.4"
+            glib:type-name="ClutterStateKey"
+            glib:get-type="clutter_state_key_get_type"
+            c:symbol-prefix="state_key">
+      <doc xml:whitespace="preserve">&lt;structname&gt;ClutterStateKey&lt;/structname&gt; is an opaque structure whose
+members cannot be accessed directly</doc>
+      <method name="get_mode"
+              c:identifier="clutter_state_key_get_mode"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the easing mode used for @state_key.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the mode of a #ClutterStateKey</doc>
+          <type name="gulong" c:type="gulong"/>
+        </return-value>
+      </method>
+      <method name="get_object"
+              c:identifier="clutter_state_key_get_object"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the object instance this #ClutterStateKey applies to.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the object this state key applies to.</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+      </method>
+      <method name="get_post_delay"
+              c:identifier="clutter_state_key_get_post_delay"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the duration of the pause after transitioning is complete
+as a fraction of the total transition time.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the post delay, used after doing the transition.</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_pre_delay"
+              c:identifier="clutter_state_key_get_pre_delay"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the pause before transitioning starts as a fraction of
+the total transition time.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the pre delay used before starting the transition.</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_property_name"
+              c:identifier="clutter_state_key_get_property_name"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the name of the property this #ClutterStateKey applies to
+by the #ClutterStateKey and should never be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the property. The returned string is owned</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_property_type"
+              c:identifier="clutter_state_key_get_property_type"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the #GType of the property a key applies to
+You can use this type to initialize the #GValue to pass to
+clutter_state_key_get_value()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GType of the property</doc>
+          <type name="GType" c:type="GType"/>
+        </return-value>
+      </method>
+      <method name="get_source_state_name"
+              c:identifier="clutter_state_key_get_source_state_name"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the name of the source state of the @state_key
+if this is the generic state key for the given property when
+transitioning to the target state. The returned string is owned
+by the #ClutterStateKey and should never be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the source state for this key, or %NULL</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_target_state_name"
+              c:identifier="clutter_state_key_get_target_state_name"
+              version="1.4">
+        <doc xml:whitespace="preserve">Get the name of the source state this #ClutterStateKey contains,
+or NULL if this is the generic state key for the given property
+when transitioning to the target state.
+the key is generic</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the source state for this key, or NULL if</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_value"
+              c:identifier="clutter_state_key_get_value"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves a copy of the value for a #ClutterStateKey.
+The #GValue needs to be already initialized for the value type
+of the property or to a type that allow transformation from the value
+type of the key.
+Use g_value_unset() when done.
+and %FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value was successfully retrieved,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GValue initialized with the correct type for the @state_key</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="StatePrivate" c:type="ClutterStatePrivate" disguised="1">
+    </record>
+    <enumeration name="StaticColor"
+                 version="1.6"
+                 glib:type-name="ClutterStaticColor"
+                 glib:get-type="clutter_static_color_get_type"
+                 c:type="ClutterStaticColor">
+      <doc xml:whitespace="preserve">Named colors, for accessing global colors defined by Clutter</doc>
+      <member name="white"
+              value="0"
+              c:identifier="CLUTTER_COLOR_WHITE"
+              glib:nick="white"/>
+      <member name="black"
+              value="1"
+              c:identifier="CLUTTER_COLOR_BLACK"
+              glib:nick="black"/>
+      <member name="red"
+              value="2"
+              c:identifier="CLUTTER_COLOR_RED"
+              glib:nick="red"/>
+      <member name="dark_red"
+              value="3"
+              c:identifier="CLUTTER_COLOR_DARK_RED"
+              glib:nick="dark-red"/>
+      <member name="green"
+              value="4"
+              c:identifier="CLUTTER_COLOR_GREEN"
+              glib:nick="green"/>
+      <member name="dark_green"
+              value="5"
+              c:identifier="CLUTTER_COLOR_DARK_GREEN"
+              glib:nick="dark-green"/>
+      <member name="blue"
+              value="6"
+              c:identifier="CLUTTER_COLOR_BLUE"
+              glib:nick="blue"/>
+      <member name="dark_blue"
+              value="7"
+              c:identifier="CLUTTER_COLOR_DARK_BLUE"
+              glib:nick="dark-blue"/>
+      <member name="cyan"
+              value="8"
+              c:identifier="CLUTTER_COLOR_CYAN"
+              glib:nick="cyan"/>
+      <member name="dark_cyan"
+              value="9"
+              c:identifier="CLUTTER_COLOR_DARK_CYAN"
+              glib:nick="dark-cyan"/>
+      <member name="magenta"
+              value="10"
+              c:identifier="CLUTTER_COLOR_MAGENTA"
+              glib:nick="magenta"/>
+      <member name="dark_magenta"
+              value="11"
+              c:identifier="CLUTTER_COLOR_DARK_MAGENTA"
+              glib:nick="dark-magenta"/>
+      <member name="yellow"
+              value="12"
+              c:identifier="CLUTTER_COLOR_YELLOW"
+              glib:nick="yellow"/>
+      <member name="dark_yellow"
+              value="13"
+              c:identifier="CLUTTER_COLOR_DARK_YELLOW"
+              glib:nick="dark-yellow"/>
+      <member name="gray"
+              value="14"
+              c:identifier="CLUTTER_COLOR_GRAY"
+              glib:nick="gray"/>
+      <member name="dark_gray"
+              value="15"
+              c:identifier="CLUTTER_COLOR_DARK_GRAY"
+              glib:nick="dark-gray"/>
+      <member name="light_gray"
+              value="16"
+              c:identifier="CLUTTER_COLOR_LIGHT_GRAY"
+              glib:nick="light-gray"/>
+      <member name="butter"
+              value="17"
+              c:identifier="CLUTTER_COLOR_BUTTER"
+              glib:nick="butter"/>
+      <member name="butter_light"
+              value="18"
+              c:identifier="CLUTTER_COLOR_BUTTER_LIGHT"
+              glib:nick="butter-light"/>
+      <member name="butter_dark"
+              value="19"
+              c:identifier="CLUTTER_COLOR_BUTTER_DARK"
+              glib:nick="butter-dark"/>
+      <member name="orange"
+              value="20"
+              c:identifier="CLUTTER_COLOR_ORANGE"
+              glib:nick="orange"/>
+      <member name="orange_light"
+              value="21"
+              c:identifier="CLUTTER_COLOR_ORANGE_LIGHT"
+              glib:nick="orange-light"/>
+      <member name="orange_dark"
+              value="22"
+              c:identifier="CLUTTER_COLOR_ORANGE_DARK"
+              glib:nick="orange-dark"/>
+      <member name="chocolate"
+              value="23"
+              c:identifier="CLUTTER_COLOR_CHOCOLATE"
+              glib:nick="chocolate"/>
+      <member name="chocolate_light"
+              value="24"
+              c:identifier="CLUTTER_COLOR_CHOCOLATE_LIGHT"
+              glib:nick="chocolate-light"/>
+      <member name="chocolate_dark"
+              value="25"
+              c:identifier="CLUTTER_COLOR_CHOCOLATE_DARK"
+              glib:nick="chocolate-dark"/>
+      <member name="chameleon"
+              value="26"
+              c:identifier="CLUTTER_COLOR_CHAMELEON"
+              glib:nick="chameleon"/>
+      <member name="chameleon_light"
+              value="27"
+              c:identifier="CLUTTER_COLOR_CHAMELEON_LIGHT"
+              glib:nick="chameleon-light"/>
+      <member name="chameleon_dark"
+              value="28"
+              c:identifier="CLUTTER_COLOR_CHAMELEON_DARK"
+              glib:nick="chameleon-dark"/>
+      <member name="sky_blue"
+              value="29"
+              c:identifier="CLUTTER_COLOR_SKY_BLUE"
+              glib:nick="sky-blue"/>
+      <member name="sky_blue_light"
+              value="30"
+              c:identifier="CLUTTER_COLOR_SKY_BLUE_LIGHT"
+              glib:nick="sky-blue-light"/>
+      <member name="sky_blue_dark"
+              value="31"
+              c:identifier="CLUTTER_COLOR_SKY_BLUE_DARK"
+              glib:nick="sky-blue-dark"/>
+      <member name="plum"
+              value="32"
+              c:identifier="CLUTTER_COLOR_PLUM"
+              glib:nick="plum"/>
+      <member name="plum_light"
+              value="33"
+              c:identifier="CLUTTER_COLOR_PLUM_LIGHT"
+              glib:nick="plum-light"/>
+      <member name="plum_dark"
+              value="34"
+              c:identifier="CLUTTER_COLOR_PLUM_DARK"
+              glib:nick="plum-dark"/>
+      <member name="scarlet_red"
+              value="35"
+              c:identifier="CLUTTER_COLOR_SCARLET_RED"
+              glib:nick="scarlet-red"/>
+      <member name="scarlet_red_light"
+              value="36"
+              c:identifier="CLUTTER_COLOR_SCARLET_RED_LIGHT"
+              glib:nick="scarlet-red-light"/>
+      <member name="scarlet_red_dark"
+              value="37"
+              c:identifier="CLUTTER_COLOR_SCARLET_RED_DARK"
+              glib:nick="scarlet-red-dark"/>
+      <member name="aluminium_1"
+              value="38"
+              c:identifier="CLUTTER_COLOR_ALUMINIUM_1"
+              glib:nick="aluminium-1"/>
+      <member name="aluminium_2"
+              value="39"
+              c:identifier="CLUTTER_COLOR_ALUMINIUM_2"
+              glib:nick="aluminium-2"/>
+      <member name="aluminium_3"
+              value="40"
+              c:identifier="CLUTTER_COLOR_ALUMINIUM_3"
+              glib:nick="aluminium-3"/>
+      <member name="aluminium_4"
+              value="41"
+              c:identifier="CLUTTER_COLOR_ALUMINIUM_4"
+              glib:nick="aluminium-4"/>
+      <member name="aluminium_5"
+              value="42"
+              c:identifier="CLUTTER_COLOR_ALUMINIUM_5"
+              glib:nick="aluminium-5"/>
+      <member name="aluminium_6"
+              value="43"
+              c:identifier="CLUTTER_COLOR_ALUMINIUM_6"
+              glib:nick="aluminium-6"/>
+      <member name="transparent"
+              value="44"
+              c:identifier="CLUTTER_COLOR_TRANSPARENT"
+              glib:nick="transparent"/>
+    </enumeration>
+    <constant name="StickyKeys_Enable" value="65141">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Stop" value="269025064">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Subtitle" value="269025178">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Super_L" value="65515">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Super_R" value="65516">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Support" value="269025150">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Suspend" value="269025191">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Switch_VT_1" value="269024769">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Switch_VT_10" value="269024778">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Switch_VT_11" value="269024779">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Switch_VT_12" value="269024780">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Switch_VT_2" value="269024770">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Switch_VT_3" value="269024771">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Switch_VT_4" value="269024772">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Switch_VT_5" value="269024773">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Switch_VT_6" value="269024774">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Switch_VT_7" value="269024775">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Switch_VT_8" value="269024776">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Switch_VT_9" value="269024777">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Sys_Req" value="65301">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="T" value="84">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="THORN" value="222">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Tab" value="65289">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <enumeration name="TableAlignment"
+                 version="1.4"
+                 glib:type-name="ClutterTableAlignment"
+                 glib:get-type="clutter_table_alignment_get_type"
+                 c:type="ClutterTableAlignment">
+      <doc xml:whitespace="preserve">The alignment policies available on each axis of the #ClutterTableLayout</doc>
+      <member name="start"
+              value="0"
+              c:identifier="CLUTTER_TABLE_ALIGNMENT_START"
+              glib:nick="start"/>
+      <member name="center"
+              value="1"
+              c:identifier="CLUTTER_TABLE_ALIGNMENT_CENTER"
+              glib:nick="center"/>
+      <member name="end"
+              value="2"
+              c:identifier="CLUTTER_TABLE_ALIGNMENT_END"
+              glib:nick="end"/>
+    </enumeration>
+    <class name="TableLayout"
+           c:symbol-prefix="table_layout"
+           c:type="ClutterTableLayout"
+           version="1.4"
+           parent="LayoutManager"
+           glib:type-name="ClutterTableLayout"
+           glib:get-type="clutter_table_layout_get_type"
+           glib:type-struct="TableLayoutClass">
+      <doc xml:whitespace="preserve">The #ClutterTableLayout structure contains only private data
+and should be accessed using the provided API</doc>
+      <constructor name="new"
+                   c:identifier="clutter_table_layout_new"
+                   version="1.4">
+        <doc xml:whitespace="preserve">Creates a new #ClutterTableLayout layout manager</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterTableLayout</doc>
+          <type name="LayoutManager" c:type="ClutterLayoutManager*"/>
+        </return-value>
+      </constructor>
+      <method name="get_alignment"
+              c:identifier="clutter_table_layout_get_alignment"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the horizontal and vertical alignment policies for @actor
+as set using clutter_table_layout_pack() or
+clutter_table_layout_set_alignment().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @layout</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_align"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the horizontal alignment policy</doc>
+            <type name="TableAlignment" c:type="ClutterTableAlignment*"/>
+          </parameter>
+          <parameter name="y_align"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the vertical alignment policy</doc>
+            <type name="TableAlignment" c:type="ClutterTableAlignment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_column_count"
+              c:identifier="clutter_table_layout_get_column_count"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieve the current number of columns in @layout</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of columns</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_column_spacing"
+              c:identifier="clutter_table_layout_get_column_spacing"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the spacing set using clutter_table_layout_set_column_spacing()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the spacing between columns of the #ClutterTableLayout</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_easing_duration"
+              c:identifier="clutter_table_layout_get_easing_duration"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the duration set using clutter_table_layout_set_easing_duration()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the duration of the animations, in milliseconds</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_easing_mode"
+              c:identifier="clutter_table_layout_get_easing_mode"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the easing mode set using clutter_table_layout_set_easing_mode()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an easing mode</doc>
+          <type name="gulong" c:type="gulong"/>
+        </return-value>
+      </method>
+      <method name="get_expand"
+              c:identifier="clutter_table_layout_get_expand"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the horizontal and vertical expand policies for @actor
+as set using clutter_table_layout_pack() or clutter_table_layout_set_expand()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @layout</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_expand"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the horizontal expand policy</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="y_expand"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the vertical expand policy</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_fill"
+              c:identifier="clutter_table_layout_get_fill"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the horizontal and vertical fill policies for @actor
+as set using clutter_table_layout_pack() or clutter_table_layout_set_fill()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @layout</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_fill"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the horizontal fill policy</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="y_fill"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the vertical fill policy</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_row_count"
+              c:identifier="clutter_table_layout_get_row_count"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieve the current number rows in the @layout</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of rows</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_row_spacing"
+              c:identifier="clutter_table_layout_get_row_spacing"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the spacing set using clutter_table_layout_set_row_spacing()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the spacing between rows of the #ClutterTableLayout</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_span"
+              c:identifier="clutter_table_layout_get_span"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the row and column span for @actor as set using
+clutter_table_layout_pack() or clutter_table_layout_set_span()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @layout</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="column_span"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the col span</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="row_span"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the row span</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_use_animations"
+              c:identifier="clutter_table_layout_get_use_animations"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves whether @layout should animate changes in the layout properties
+Since clutter_table_layout_set_use_animations()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the animations should be used, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="pack"
+              c:identifier="clutter_table_layout_pack"
+              version="1.4">
+        <doc xml:whitespace="preserve">Packs @actor inside the #ClutterContainer associated to @layout
+at the given row and column.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the column the @actor should be put, or -1 to append</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="row" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the row the @actor should be put, or -1 to append</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_alignment"
+              c:identifier="clutter_table_layout_set_alignment"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the horizontal and vertical alignment policies for @actor
+inside @layout</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @layout</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Horizontal alignment policy for @actor</doc>
+            <type name="TableAlignment" c:type="ClutterTableAlignment"/>
+          </parameter>
+          <parameter name="y_align" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Vertical alignment policy for @actor</doc>
+            <type name="TableAlignment" c:type="ClutterTableAlignment"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_column_spacing"
+              c:identifier="clutter_table_layout_set_column_spacing"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the spacing between columns of @layout</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spacing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the spacing between columns of the layout, in pixels</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_easing_duration"
+              c:identifier="clutter_table_layout_set_easing_duration"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the duration of the animations used by @layout when animating changes
+in the layout properties
+Use clutter_table_layout_set_use_animations() to enable and disable the
+animations</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the duration of the animations, in milliseconds</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_easing_mode"
+              c:identifier="clutter_table_layout_set_easing_mode"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the easing mode to be used by @layout when animating changes in layout
+properties
+Use clutter_table_layout_set_use_animations() to enable and disable the
+animations</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an easing mode, either from #ClutterAnimationMode or a logical id from clutter_alpha_register_func()</doc>
+            <type name="gulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_expand"
+              c:identifier="clutter_table_layout_set_expand"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the horizontal and vertical expand policies for @actor
+inside @layout</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @layout</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_expand" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether @actor should allocate extra space horizontally</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="y_expand" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether @actor should allocate extra space vertically</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_fill"
+              c:identifier="clutter_table_layout_set_fill"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the horizontal and vertical fill policies for @actor
+inside @layout</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @layout</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="x_fill" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether @actor should fill horizontally the allocated space</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="y_fill" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether @actor should fill vertically the allocated space</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_row_spacing"
+              c:identifier="clutter_table_layout_set_row_spacing"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the spacing between rows of @layout</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spacing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the spacing between rows of the layout, in pixels</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_span"
+              c:identifier="clutter_table_layout_set_span"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the row and column span for @actor
+inside @layout</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor child of @layout</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+          <parameter name="column_span" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Column span for @actor</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="row_span" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Row span for @actor</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_use_animations"
+              c:identifier="clutter_table_layout_set_use_animations"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets whether @layout should animate changes in the layout properties
+The duration of the animations is controlled by
+clutter_table_layout_set_easing_duration(); the easing mode to be used
+by the animations is controlled by clutter_table_layout_set_easing_mode()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="animate" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the @layout should use animations</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="column-spacing"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The spacing between columns of the #ClutterTableLayout, in pixels</doc>
+        <type name="guint"/>
+      </property>
+      <property name="easing-duration"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The duration of the animations, in case #ClutterTableLayout:use-animations
+is set to %TRUE
+The duration is expressed in milliseconds</doc>
+        <type name="guint"/>
+      </property>
+      <property name="easing-mode"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The easing mode for the animations, in case
+#ClutterTableLayout:use-animations is set to %TRUE
+either be a value from the #ClutterAnimationMode enumeration, like
+%CLUTTER_EASE_OUT_CUBIC, or a logical id as returned by
+clutter_alpha_register_func()
+The default value is %CLUTTER_EASE_OUT_CUBIC</doc>
+        <type name="gulong"/>
+      </property>
+      <property name="row-spacing"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The spacing between rows of the #ClutterTableLayout, in pixels</doc>
+        <type name="guint"/>
+      </property>
+      <property name="use-animations"
+                version="1.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the #ClutterTableLayout should animate changes in the
+layout properties</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="LayoutManager" c:type="ClutterLayoutManager"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="TableLayoutPrivate" c:type="ClutterTableLayoutPrivate*"/>
+      </field>
+    </class>
+    <record name="TableLayoutClass"
+            c:type="ClutterTableLayoutClass"
+            glib:is-gtype-struct-for="TableLayout"
+            version="1.4">
+      <doc xml:whitespace="preserve">The #ClutterTableLayoutClass structure contains only private
+data and should be accessed using the provided API</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="LayoutManagerClass" c:type="ClutterLayoutManagerClass"/>
+      </field>
+    </record>
+    <record name="TableLayoutPrivate"
+            c:type="ClutterTableLayoutPrivate"
+            disguised="1">
+    </record>
+    <constant name="Tabovedot" value="16785002">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="TaskPane" value="269025151">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Tcaron" value="427">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Tcedilla" value="478">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Terminal" value="269025152">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Terminate_Server" value="65237">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Text"
+           c:symbol-prefix="text"
+           c:type="ClutterText"
+           version="1.0"
+           parent="Actor"
+           glib:type-name="ClutterText"
+           glib:get-type="clutter_text_get_type"
+           glib:type-struct="TextClass">
+      <doc xml:whitespace="preserve">The #ClutterText struct contains only private data.</doc>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Animatable"/>
+      <implements name="Scriptable"/>
+      <constructor name="new" c:identifier="clutter_text_new" version="1.0">
+        <doc xml:whitespace="preserve">Creates a new #ClutterText actor. This actor can be used to
+display and edit text.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterText actor</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_full"
+                   c:identifier="clutter_text_new_full"
+                   version="1.0">
+        <doc xml:whitespace="preserve">Creates a new #ClutterText actor, using @font_name as the font
+description; @text will be used to set the contents of the actor;
+and @color will be used as the color to render @text.
+This function is equivalent to calling clutter_text_new(),
+clutter_text_set_font_name(), clutter_text_set_text() and
+clutter_text_set_color().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterText actor</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="font_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string with a font description</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the contents of the actor</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the color to be used to render @text</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_text"
+                   c:identifier="clutter_text_new_with_text"
+                   version="1.0">
+        <doc xml:whitespace="preserve">Creates a new #ClutterText actor, using @font_name as the font
+description; @text will be used to set the contents of the actor.
+This function is equivalent to calling clutter_text_new(),
+clutter_text_set_font_name(), and clutter_text_set_text().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #ClutterText actor</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="font_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string with a font description</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the contents of the actor</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="activate">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="cursor_event">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="geometry" transfer-ownership="none">
+            <type name="Geometry" c:type="ClutterGeometry*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="text_changed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <method name="activate"
+              c:identifier="clutter_text_activate"
+              version="1.0">
+        <doc xml:whitespace="preserve">Emits the #ClutterText::activate signal, if @self has been set
+as activatable using clutter_text_set_activatable().
+This function can be used to emit the ::activate signal inside
+a #ClutterActor::captured-event or #ClutterActor::key-press-event
+signal handlers before the default signal handler for the
+#ClutterText is invoked.
+and %FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the ::activate signal has been emitted,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="delete_chars"
+              c:identifier="clutter_text_delete_chars"
+              version="1.0">
+        <doc xml:whitespace="preserve">Deletes @n_chars inside a #ClutterText actor, starting from the
+current cursor position.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_chars" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of characters to delete</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="delete_selection"
+              c:identifier="clutter_text_delete_selection"
+              version="1.0">
+        <doc xml:whitespace="preserve">Deletes the currently selected text
+This function is only useful in subclasses of #ClutterText
+is empty, and %FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if text was deleted or if the text actor</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="delete_text"
+              c:identifier="clutter_text_delete_text"
+              version="1.0">
+        <doc xml:whitespace="preserve">Deletes the text inside a #ClutterText actor between @start_pos
+and @end_pos.
+The starting and ending positions are expressed in characters,
+not in bytes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">starting position</doc>
+            <type name="gssize" c:type="gssize"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">ending position</doc>
+            <type name="gssize" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_activatable"
+              c:identifier="clutter_text_get_activatable"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves whether a #ClutterText is activatable or not.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the actor is activatable</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_attributes"
+              c:identifier="clutter_text_get_attributes"
+              version="1.0">
+        <doc xml:whitespace="preserve">Gets the attribute list that was set on the #ClutterText actor
+clutter_text_set_attributes(), if any.
+returned value is owned by the #ClutterText and should not be unreferenced.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the attribute list, or %NULL if none was set. The</doc>
+          <type name="Pango.AttrList" c:type="PangoAttrList*"/>
+        </return-value>
+      </method>
+      <method name="get_chars"
+              c:identifier="clutter_text_get_chars"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the contents of the #ClutterText actor between
+The positions are specified in characters, not in bytes.
+the text actor between the specified positions. Use g_free()
+to free the resources when done</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated string with the contents of</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">start of text, in characters</doc>
+            <type name="gssize" c:type="gssize"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">end of text, in characters</doc>
+            <type name="gssize" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_color"
+              c:identifier="clutter_text_get_color"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the text color as set by clutter_text_set_color().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for a #ClutterColor</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_cursor_color"
+              c:identifier="clutter_text_get_cursor_color"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the color of the cursor of a #ClutterText actor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for a #ClutterColor</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_cursor_position"
+              c:identifier="clutter_text_get_cursor_position"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the cursor position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the cursor position, in characters</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_cursor_size"
+              c:identifier="clutter_text_get_cursor_size"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the size of the cursor of a #ClutterText actor.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the size of the cursor, in pixels</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_cursor_visible"
+              c:identifier="clutter_text_get_cursor_visible"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves whether the cursor of a #ClutterText actor is visible.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the cursor is visible</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_editable"
+              c:identifier="clutter_text_get_editable"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves whether a #ClutterText is editable or not.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the actor is editable</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_ellipsize"
+              c:identifier="clutter_text_get_ellipsize"
+              version="1.0">
+        <doc xml:whitespace="preserve">Returns the ellipsizing position of a #ClutterText actor, as
+set by clutter_text_set_ellipsize().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">#PangoEllipsizeMode</doc>
+          <type name="Pango.EllipsizeMode" c:type="PangoEllipsizeMode"/>
+        </return-value>
+      </method>
+      <method name="get_font_description"
+              c:identifier="clutter_text_get_font_description"
+              version="1.2">
+        <doc xml:whitespace="preserve">Retrieves the #PangoFontDescription used by @self
+by the #ClutterText actor and it should not be modified or freed</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #PangoFontDescription. The returned value is owned</doc>
+          <type name="Pango.FontDescription" c:type="PangoFontDescription*"/>
+        </return-value>
+      </method>
+      <method name="get_font_name"
+              c:identifier="clutter_text_get_font_name"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the font name as set by clutter_text_set_font_name().
+string is owned by the #ClutterText actor and should not be
+modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string containing the font name. The returned</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_justify"
+              c:identifier="clutter_text_get_justify"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves whether the #ClutterText actor should justify its contents
+on both margins.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the text should be justified</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_layout"
+              c:identifier="clutter_text_get_layout"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the current #PangoLayout used by a #ClutterText actor.
+the #ClutterText actor and should not be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #PangoLayout. The returned object is owned by</doc>
+          <type name="Pango.Layout" c:type="PangoLayout*"/>
+        </return-value>
+      </method>
+      <method name="get_line_alignment"
+              c:identifier="clutter_text_get_line_alignment"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the alignment of a #ClutterText, as set by
+clutter_text_set_line_alignment().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #PangoAlignment</doc>
+          <type name="Pango.Alignment" c:type="PangoAlignment"/>
+        </return-value>
+      </method>
+      <method name="get_line_wrap"
+              c:identifier="clutter_text_get_line_wrap"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the value set using clutter_text_set_line_wrap().
+its contents</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #ClutterText actor should wrap</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_line_wrap_mode"
+              c:identifier="clutter_text_get_line_wrap_mode"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the line wrap mode used by the #ClutterText actor.
+See clutter_text_set_line_wrap_mode ().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the wrap mode used by the #ClutterText</doc>
+          <type name="Pango.WrapMode" c:type="PangoWrapMode"/>
+        </return-value>
+      </method>
+      <method name="get_max_length"
+              c:identifier="clutter_text_get_max_length"
+              version="1.0">
+        <doc xml:whitespace="preserve">Gets the maximum length of text that can be set into a text actor.
+See clutter_text_set_max_length().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the maximum number of characters.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_password_char"
+              c:identifier="clutter_text_get_password_char"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the character to use in place of the actual text
+as set by clutter_text_set_password_char().
+character is not set</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a Unicode character or 0 if the password</doc>
+          <type name="gunichar" c:type="gunichar"/>
+        </return-value>
+      </method>
+      <method name="get_selectable"
+              c:identifier="clutter_text_get_selectable"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves whether a #ClutterText is selectable or not.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the actor is selectable</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_selection"
+              c:identifier="clutter_text_get_selection"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the currently selected text.
+selected text, or %NULL. Use g_free() to free the returned
+string.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated string containing the currently</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_selection_bound"
+              c:identifier="clutter_text_get_selection_bound"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the other end of the selection of a #ClutterText actor,
+in characters from the current cursor position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the position of the other end of the selection</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_selection_color"
+              c:identifier="clutter_text_get_selection_color"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the color of the selection of a #ClutterText actor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for a #ClutterColor</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_single_line_mode"
+              c:identifier="clutter_text_get_single_line_mode"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves whether the #ClutterText actor is in single line mode.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #ClutterText actor is in single line mode</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_text"
+              c:identifier="clutter_text_get_text"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves a pointer to the current contents of a #ClutterText
+actor.
+If you need a copy of the contents for manipulating, either
+use g_strdup() on the returned string, or use:
+|[
+copy = clutter_text_get_chars (text, 0, -1);
+]|
+Which will return a newly allocated string.
+is owned by the #ClutterText actor and should never be
+modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the contents of the actor. The returned string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_use_markup"
+              c:identifier="clutter_text_get_use_markup"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves whether the contents of the #ClutterText actor should be
+parsed for the Pango text markup.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the contents will be parsed for markup</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="insert_text"
+              c:identifier="clutter_text_insert_text"
+              version="1.0">
+        <doc xml:whitespace="preserve">Inserts @text into a #ClutterActor at the given position.
+If @position is a negative number, the text will be appended
+at the end of the current contents of the #ClutterText.
+The position is expressed in characters, not in bytes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the text to be inserted</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position of the insertion, or -1</doc>
+            <type name="gssize" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_unichar"
+              c:identifier="clutter_text_insert_unichar"
+              version="1.0">
+        <doc xml:whitespace="preserve">Inserts @wc at the current cursor position of a
+#ClutterText actor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="wc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a Unicode character</doc>
+            <type name="gunichar" c:type="gunichar"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="position_to_coords"
+              c:identifier="clutter_text_position_to_coords"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the coordinates of the given @position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the conversion was successful</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position in characters</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the X coordinate, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the Y coordinate, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="line_height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the line height, or %NULL</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_activatable"
+              c:identifier="clutter_text_set_activatable"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets whether a #ClutterText actor should be activatable.
+An activatable #ClutterText actor will emit the #ClutterText::activate
+signal whenever the 'Enter' (or 'Return') key is pressed; if it is not
+activatable, a new line will be appended to the current content.
+An activatable #ClutterText must also be set as editable using
+clutter_text_set_editable().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="activatable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the #ClutterText actor should be activatable</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attributes"
+              c:identifier="clutter_text_set_attributes"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the attributes list that are going to be applied to the
+#ClutterText contents.
+The #ClutterText actor will take a reference on the #PangoAttrList
+passed to this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attrs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoAttrList or %NULL to unset the attributes</doc>
+            <type name="Pango.AttrList" c:type="PangoAttrList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_color"
+              c:identifier="clutter_text_set_color"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the color of the contents of a #ClutterText actor.
+The overall opacity of the #ClutterText actor will be the
+result of the alpha value of @color and the composited
+opacity of the actor itself on the scenegraph, as returned
+by clutter_actor_get_paint_opacity().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterColor</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_cursor_color"
+              c:identifier="clutter_text_set_cursor_color"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the color of the cursor of a #ClutterText actor.
+If @color is %NULL, the cursor color will be the same as the
+text color.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the color of the cursor, or %NULL to unset it</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_cursor_position"
+              c:identifier="clutter_text_set_cursor_position"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the cursor of a #ClutterText actor at @position.
+The position is expressed in characters, not in bytes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new cursor position, in characters</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_cursor_size"
+              c:identifier="clutter_text_set_cursor_size"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the size of the cursor of a #ClutterText. The cursor
+will only be visible if the #ClutterText:cursor-visible property
+is set to %TRUE.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the size of the cursor, in pixels, or -1 to use the default value</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_cursor_visible"
+              c:identifier="clutter_text_set_cursor_visible"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets whether the cursor of a #ClutterText actor should be
+visible or not.
+The color of the cursor will be the same as the text color
+unless clutter_text_set_cursor_color() has been called.
+The size of the cursor can be set using clutter_text_set_cursor_size().
+The position of the cursor can be changed programmatically using
+clutter_text_set_cursor_position().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cursor_visible" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the cursor should be visible</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_editable"
+              c:identifier="clutter_text_set_editable"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets whether the #ClutterText actor should be editable.
+An editable #ClutterText with key focus set using
+clutter_actor_grab_key_focus() or clutter_stage_take_key_focus()
+will receive key events and will update its contents accordingly.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="editable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the #ClutterText should be editable</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_ellipsize"
+              c:identifier="clutter_text_set_ellipsize"
+              version="1.0">
+        <doc xml:whitespace="preserve">text if there is not enough space to render the entire contents
+of a #ClutterText actor</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoEllipsizeMode</doc>
+            <type name="Pango.EllipsizeMode" c:type="PangoEllipsizeMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_font_description"
+              c:identifier="clutter_text_set_font_description"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets @font_desc as the font description for a #ClutterText
+The #PangoFontDescription is copied by the #ClutterText actor
+so you can safely call pango_font_description_free() on it after
+calling this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font_desc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #PangoFontDescription</doc>
+            <type name="Pango.FontDescription" c:type="PangoFontDescription*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_font_name"
+              c:identifier="clutter_text_set_font_name"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the font used by a #ClutterText. The @font_name string
+must either be %NULL, which means that the font name from the
+default #ClutterBackend will be used; or be something that can
+be parsed by the pango_font_description_from_string() function,
+like:
+|[
+clutter_text_set_font_name (text, "Sans 10pt");
+clutter_text_set_font_name (text, "Serif 16px");
+clutter_text_set_font_name (text, "Helvetica 10");
+]|</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font_name" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a font name, or %NULL to set the default font name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_justify"
+              c:identifier="clutter_text_set_justify"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets whether the text of the #ClutterText actor should be justified
+on both margins. This setting is ignored if Clutter is compiled
+against Pango &amp;lt; 1.18.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="justify" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the text should be justified</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_line_alignment"
+              c:identifier="clutter_text_set_line_alignment"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the way that the lines of a wrapped label are aligned with
+respect to each other. This does not affect the overall alignment
+of the label within its allocated or specified width.
+To align a #ClutterText actor you should add it to a container
+that supports alignment, or use the anchor point.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alignment" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #PangoAlignment</doc>
+            <type name="Pango.Alignment" c:type="PangoAlignment"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_line_wrap"
+              c:identifier="clutter_text_set_line_wrap"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets whether the contents of a #ClutterText actor should wrap,
+if they don't fit the size assigned to the actor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="line_wrap" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the contents should wrap</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_line_wrap_mode"
+              c:identifier="clutter_text_set_line_wrap_mode"
+              version="1.0">
+        <doc xml:whitespace="preserve">If line wrapping is enabled (see clutter_text_set_line_wrap()) this
+function controls how the line wrapping is performed. The default is
+%PANGO_WRAP_WORD which means wrap on word boundaries.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="wrap_mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the line wrapping mode</doc>
+            <type name="Pango.WrapMode" c:type="PangoWrapMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_markup"
+              c:identifier="clutter_text_set_markup"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets @markup as the contents of a #ClutterText.
+This is a convenience function for setting a string containing
+Pango markup, and it is logically equivalent to:
+|[
+clutter_text_set_text (CLUTTER_TEXT (actor), markup);
+clutter_text_set_use_markup (CLUTTER_TEXT (actor), TRUE);
+]|</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="markup" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string containing Pango markup. Passing %NULL is the same as passing "" (the empty string)</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_max_length"
+              c:identifier="clutter_text_set_max_length"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the maximum allowed length of the contents of the actor. If the
+current contents are longer than the given length, then they will be
+truncated to fit.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="max" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the maximum number of characters allowed in the text actor; 0 to disable or -1 to set the length of the current string</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_password_char"
+              c:identifier="clutter_text_set_password_char"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the character to use in place of the actual text in a
+password text actor.
+If @wc is 0 the text will be displayed as it is entered in the
+#ClutterText actor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="wc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a Unicode character, or 0 to unset the password character</doc>
+            <type name="gunichar" c:type="gunichar"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_preedit_string"
+              c:identifier="clutter_text_set_preedit_string"
+              version="1.2">
+        <doc xml:whitespace="preserve">Sets, or unsets, the pre-edit string. This function is useful
+for input methods to display a string (with eventual specific
+Pango attributes) before it is entered inside the #ClutterText
+buffer.
+The preedit string and attributes are ignored if the #ClutterText
+actor is not editable.
+This function should not be used by applications</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="preedit_str"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the pre-edit string, or %NULL to unset it</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="preedit_attrs"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the pre-edit string attributes</doc>
+            <type name="Pango.AttrList" c:type="PangoAttrList*"/>
+          </parameter>
+          <parameter name="cursor_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the cursor position for the pre-edit string</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_selectable"
+              c:identifier="clutter_text_set_selectable"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets whether a #ClutterText actor should be selectable.
+A selectable #ClutterText will allow selecting its contents using
+the pointer or the keyboard.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="selectable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the #ClutterText actor should be selectable</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_selection"
+              c:identifier="clutter_text_set_selection"
+              version="1.0">
+        <doc xml:whitespace="preserve">Selects the region of text between @start_pos and @end_pos.
+This function changes the position of the cursor to match</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">start of the selection, in characters</doc>
+            <type name="gssize" c:type="gssize"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">end of the selection, in characters</doc>
+            <type name="gssize" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_selection_bound"
+              c:identifier="clutter_text_set_selection_bound"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the other end of the selection, starting from the current
+cursor position.
+If @selection_bound is -1, the selection unset.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="selection_bound" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position of the end of the selection, in characters</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_selection_color"
+              c:identifier="clutter_text_set_selection_color"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the color of the selection of a #ClutterText actor.
+If @color is %NULL, the selection color will be the same as the
+cursor color, or if no cursor color is set either then it will be
+the same as the text color.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the color of the selection, or %NULL to unset it</doc>
+            <type name="Color" c:type="ClutterColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_single_line_mode"
+              c:identifier="clutter_text_set_single_line_mode"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets whether a #ClutterText actor should be in single line mode
+or not. Only editable #ClutterText&lt;!-- --&gt;s can be in single line
+mode.
+A text actor in single line mode will not wrap text and will clip
+the visible area to the predefined size. The contents of the
+text actor will scroll to display the end of the text if its length
+is bigger than the allocated width.
+When setting the single line mode the #ClutterText:activatable
+property is also set as a side effect. Instead of entering a new
+line character, the text actor will emit the #ClutterText::activate
+signal.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="single_line" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to enable single line mode</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_text"
+              c:identifier="clutter_text_set_text"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the contents of a #ClutterText actor.
+If the #ClutterText:use-markup property was set to %TRUE it
+will be reset to %FALSE as a side effect. If you want to
+maintain the #ClutterText:use-markup you should use the
+clutter_text_set_markup() function instead</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the text to set. Passing %NULL is the same as passing "" (the empty string)</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_use_markup"
+              c:identifier="clutter_text_set_use_markup"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets whether the contents of the #ClutterText actor contains markup
+in &lt;link linkend="PangoMarkupFormat"&gt;Pango's text markup language&lt;/link&gt;.
+Setting #ClutterText:use-markup on an editable #ClutterText will
+not have any effect except hiding the markup.
+See also #ClutterText:use-markup.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the text should be parsed for markup.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="activatable"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Toggles whether return invokes the activate signal or not.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="attributes"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">A list of #PangoStyleAttribute&lt;!-- --&gt;s to be applied to the
+contents of the #ClutterText actor.</doc>
+        <type name="Pango.AttrList"/>
+      </property>
+      <property name="color"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The color used to render the text.</doc>
+        <type name="Color"/>
+      </property>
+      <property name="cursor-color"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The color of the cursor.</doc>
+        <type name="Color"/>
+      </property>
+      <property name="cursor-color-set"
+                version="1.0"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Will be set to %TRUE if #ClutterText:cursor-color has been set.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="cursor-size"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The size of the cursor, in pixels. If set to -1 the size used will
+be the default cursor size of 2 pixels.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="cursor-visible"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the input cursor is visible or not, it will only be visible
+if both #ClutterText:cursor-visible and #ClutterText:editable are
+set to %TRUE.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="editable"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether key events delivered to the actor causes editing.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="ellipsize"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The preferred place to ellipsize the contents of the #ClutterText actor</doc>
+        <type name="Pango.EllipsizeMode"/>
+      </property>
+      <property name="font-description"
+                version="1.2"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #PangoFontDescription that should be used by the #ClutterText
+If you have a string describing the font then you should look at
+#ClutterText:font-name instead</doc>
+        <type name="Pango.FontDescription"/>
+      </property>
+      <property name="font-name"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The font to be used by the #ClutterText, as a string
+that can be parsed by pango_font_description_from_string().
+If set to %NULL, the default system font will be used instead.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="justify"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the contents of the #ClutterText should be justified
+on both margins.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="line-alignment"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The preferred alignment for the text. This property controls
+the alignment of multi-line paragraphs.</doc>
+        <type name="Pango.Alignment"/>
+      </property>
+      <property name="line-wrap"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether to wrap the lines of #ClutterText:text if the contents
+exceed the available allocation. The wrapping strategy is
+controlled by the #ClutterText:line-wrap-mode property.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="line-wrap-mode"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If #ClutterText:line-wrap is set to %TRUE, this property will
+control how the text is wrapped.</doc>
+        <type name="Pango.WrapMode"/>
+      </property>
+      <property name="max-length"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The maximum length of the contents of the #ClutterText actor.</doc>
+        <type name="gint"/>
+      </property>
+      <property name="password-char"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If non-zero, the character that should be used in place of
+the actual text in a password text actor.</doc>
+        <type name="guint"/>
+      </property>
+      <property name="position"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The current input cursor position. -1 is taken to be the end of the text</doc>
+        <type name="gint"/>
+      </property>
+      <property name="selectable"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether it is possible to select text, either using the pointer
+or the keyboard.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="selection-bound"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The current input cursor position. -1 is taken to be the end of the text</doc>
+        <type name="gint"/>
+      </property>
+      <property name="selection-color"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The color of the selection.</doc>
+        <type name="Color"/>
+      </property>
+      <property name="selection-color-set"
+                version="1.0"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Will be set to %TRUE if #ClutterText:selection-color has been set.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="single-line-mode"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the #ClutterText actor should be in single line mode
+or not. A single line #ClutterText actor will only contain a
+single line of text, scrolling it in case its length is bigger
+than the allocated size.
+Setting this property will also set the #ClutterText:activatable
+property as a side-effect.
+The #ClutterText:single-line-mode property is used only if the
+#ClutterText:editable property is set to %TRUE.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="text"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The text to render inside the actor.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="use-markup"
+                version="1.0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the text includes Pango markup.
+For more informations about the Pango markup format, see
+pango_layout_set_markup() in the Pango documentation.
+&lt;note&gt;It is not possible to round-trip this property between
+%TRUE and %FALSE. Once a string with markup has been set on
+a #ClutterText actor with :use-markup set to %TRUE, the markup
+is stripped from the string.&lt;/note&gt;</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="Actor" c:type="ClutterActor"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="TextPrivate" c:type="ClutterTextPrivate*"/>
+      </field>
+      <glib:signal name="activate" version="1.0">
+        <doc xml:whitespace="preserve">The ::activate signal is emitted each time the actor is 'activated'
+by the user, normally by pressing the 'Enter' key. The signal is
+emitted only if #ClutterText:activatable is set to %TRUE.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="cursor-event" version="1.0">
+        <doc xml:whitespace="preserve">The ::cursor-event signal is emitted whenever the cursor position
+changes inside a #ClutterText actor. Inside @geometry it is stored
+the current position and size of the cursor, relative to the actor
+itself.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="geometry" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the coordinates of the cursor</doc>
+            <type name="Geometry"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="delete-text" version="1.2">
+        <doc xml:whitespace="preserve">This signal is emitted when text is deleted from the actor by
+the user. It is emitted before @self text changes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the starting position</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the end position</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="insert-text" version="1.2">
+        <doc xml:whitespace="preserve">This signal is emitted when text is inserted into the actor by
+the user. It is emitted before @self text changes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new text to insert</doc>
+            <type name="utf8"/>
+          </parameter>
+          <parameter name="new_text_length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of the new text, in bytes, or -1 if new_text is nul-terminated</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position, in characters, at which to insert the new text. this is an in-out parameter.  After the signal emission is finished, it should point after the newly inserted text.</doc>
+            <type name="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="text-changed" version="1.0">
+        <doc xml:whitespace="preserve">The ::text-changed signal is emitted after @actor's text changes</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="TextClass"
+            c:type="ClutterTextClass"
+            glib:is-gtype-struct-for="Text"
+            version="1.0">
+      <doc xml:whitespace="preserve">The #ClutterTextClass struct contains only private data.</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="ActorClass" c:type="ClutterActorClass"/>
+      </field>
+      <field name="text_changed">
+        <callback name="text_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <type name="Text" c:type="ClutterText*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="activate">
+        <callback name="activate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <type name="Text" c:type="ClutterText*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="cursor_event">
+        <callback name="cursor_event">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="self" transfer-ownership="none">
+              <type name="Text" c:type="ClutterText*"/>
+            </parameter>
+            <parameter name="geometry" transfer-ownership="none">
+              <type name="Geometry" c:type="ClutterGeometry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_reserved1" introspectable="0">
+        <callback name="_clutter_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved2" introspectable="0">
+        <callback name="_clutter_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved3" introspectable="0">
+        <callback name="_clutter_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved4" introspectable="0">
+        <callback name="_clutter_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved5" introspectable="0">
+        <callback name="_clutter_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved6" introspectable="0">
+        <callback name="_clutter_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved7" introspectable="0">
+        <callback name="_clutter_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_reserved8" introspectable="0">
+        <callback name="_clutter_reserved8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="TextDirection"
+                 version="1.2"
+                 glib:type-name="ClutterTextDirection"
+                 glib:get-type="clutter_text_direction_get_type"
+                 c:type="ClutterTextDirection">
+      <doc xml:whitespace="preserve">The text direction to be used by #ClutterActor&lt;!-- --&gt;s</doc>
+      <member name="default"
+              value="0"
+              c:identifier="CLUTTER_TEXT_DIRECTION_DEFAULT"
+              glib:nick="default"/>
+      <member name="ltr"
+              value="1"
+              c:identifier="CLUTTER_TEXT_DIRECTION_LTR"
+              glib:nick="ltr"/>
+      <member name="rtl"
+              value="2"
+              c:identifier="CLUTTER_TEXT_DIRECTION_RTL"
+              glib:nick="rtl"/>
+    </enumeration>
+    <record name="TextPrivate" c:type="ClutterTextPrivate" disguised="1">
+    </record>
+    <class name="Texture"
+           c:symbol-prefix="texture"
+           c:type="ClutterTexture"
+           version="0.1"
+           parent="Actor"
+           glib:type-name="ClutterTexture"
+           glib:get-type="clutter_texture_get_type"
+           glib:type-struct="TextureClass">
+      <doc xml:whitespace="preserve">The #ClutterTexture structure contains only private data
+and should be accessed using the provided API</doc>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Animatable"/>
+      <implements name="Scriptable"/>
+      <constructor name="new" c:identifier="clutter_texture_new">
+        <doc xml:whitespace="preserve">Creates a new empty #ClutterTexture object.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A newly created #ClutterTexture object.</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_from_actor"
+                   c:identifier="clutter_texture_new_from_actor"
+                   version="0.6">
+        <doc xml:whitespace="preserve">Creates a new #ClutterTexture object with its source a prexisting
+actor (and associated children). The textures content will contain
+'live' redirected output of the actors scene.
+Note this function is intented as a utility call for uniformly applying
+shaders to groups and other potential visual effects. It requires that
+the %CLUTTER_FEATURE_OFFSCREEN feature is supported by the current backend
+and the target system.
+Some tips on usage:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;
+&lt;para&gt;The source actor must be made visible (i.e by calling
+#clutter_actor_show).&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;The source actor must have a parent in order for it to be
+allocated a size from the layouting mechanism. If the source
+actor does not have a parent when this function is called then
+the ClutterTexture will adopt it and allocate it at its
+preferred size. Using this you can clone an actor that is
+otherwise not displayed. Because of this feature if you do
+intend to display the source actor then you must make sure that
+the actor is parented before calling
+clutter_texture_new_from_actor() or that you unparent it before
+adding it to a container.&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;When getting the image for the clone texture, Clutter
+will attempt to render the source actor exactly as it would
+appear if it was rendered on screen. The source actor's parent
+transformations are taken into account. Therefore if your
+source actor is rotated along the X or Y axes so that it has
+some depth, the texture will appear differently depending on
+the on-screen location of the source actor. While painting the
+source actor, Clutter will set up a temporary asymmetric
+perspective matrix as the projection matrix so that the source
+actor will be projected as if a small section of the screen was
+being viewed. Before version 0.8.2, an orthogonal identity
+projection was used which meant that the source actor would be
+clipped if any part of it was not on the zero Z-plane.&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;Avoid reparenting the source with the created texture.&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;A group can be padded with a transparent rectangle as to
+provide a border to contents for shader output (blurring text
+for example).&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;The texture will automatically resize to contain a further
+transformed source. However, this involves overhead and can be
+avoided by placing the source actor in a bounding group
+sized large enough to contain any child tranformations.&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;Uploading pixel data to the texture (e.g by using
+clutter_texture_set_from_file()) will destroy the offscreen texture
+data and end redirection.&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;cogl_texture_get_data() with the handle returned by
+clutter_texture_get_cogl_texture() can be used to read the
+offscreen texture pixels into a pixbuf.&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;/itemizedlist&gt;</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A newly created #ClutterTexture object, or %NULL on failure.</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A source #ClutterActor</doc>
+            <type name="Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_file"
+                   c:identifier="clutter_texture_new_from_file"
+                   version="0.8"
+                   throws="1">
+        <doc xml:whitespace="preserve">Creates a new ClutterTexture actor to display the image contained a
+file. If the image failed to load then NULL is returned and @error
+is set.
+error.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A newly created #ClutterTexture object or NULL on</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The name of an image file to load.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="load_finished">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="error" transfer-ownership="none">
+            <type name="GLib.Error" c:type="GError*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="pixbuf_change">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="size_change">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_base_size"
+              c:identifier="clutter_texture_get_base_size">
+        <doc xml:whitespace="preserve">Gets the size in pixels of the untransformed underlying image</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the width, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the height, or %NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_cogl_material"
+              c:identifier="clutter_texture_get_cogl_material"
+              version="1.0">
+        <doc xml:whitespace="preserve">Returns a handle to the underlying COGL material used for drawing
+the actor.
+material is owned by the #ClutterTexture and it should not be
+unreferenced</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a handle for a #CoglMaterial. The</doc>
+          <type name="Cogl.Handle" c:type="CoglHandle"/>
+        </return-value>
+      </method>
+      <method name="get_cogl_texture"
+              c:identifier="clutter_texture_get_cogl_texture"
+              version="0.8">
+        <doc xml:whitespace="preserve">Retrieves the handle to the underlying COGL texture used for drawing
+the actor. No extra reference is taken so if you need to keep the
+handle then you should call cogl_handle_ref() on it.
+The texture handle returned is the first layer of the material
+handle used by the #ClutterTexture. If you need to access the other
+layers you should use clutter_texture_get_cogl_material() instead
+and use the #CoglMaterial API.
+handle is owned by the #ClutterTexture and it should not be unreferenced</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle for the texture. The returned</doc>
+          <type name="Cogl.Handle" c:type="CoglHandle"/>
+        </return-value>
+      </method>
+      <method name="get_filter_quality"
+              c:identifier="clutter_texture_get_filter_quality"
+              version="0.8">
+        <doc xml:whitespace="preserve">Gets the filter quality used when scaling a texture.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The filter quality value.</doc>
+          <type name="TextureQuality" c:type="ClutterTextureQuality"/>
+        </return-value>
+      </method>
+      <method name="get_keep_aspect_ratio"
+              c:identifier="clutter_texture_get_keep_aspect_ratio"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the value set using clutter_texture_set_keep_aspect_ratio()
+aspect ratio of the underlying image</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #ClutterTexture should maintain the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_load_async"
+              c:identifier="clutter_texture_get_load_async"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the value set using clutter_texture_set_load_async()
+disk asynchronously</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #ClutterTexture should load the data from</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_load_data_async"
+              c:identifier="clutter_texture_get_load_data_async"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the value set by clutter_texture_set_load_data_async()
+data from a file asynchronously</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #ClutterTexture should load the image</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_max_tile_waste"
+              c:identifier="clutter_texture_get_max_tile_waste"
+              version="0.8">
+        <doc xml:whitespace="preserve">Gets the maximum waste that will be used when creating a texture or
+-1 if slicing is disabled.
+unlimited.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The maximum waste or -1 if the texture waste is</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_pick_with_alpha"
+              c:identifier="clutter_texture_get_pick_with_alpha"
+              version="1.4">
+        <doc xml:whitespace="preserve">Retrieves the value set by clutter_texture_set_load_data_async()
+using the alpha channel when picking.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #ClutterTexture should define its shape</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_pixel_format"
+              c:identifier="clutter_texture_get_pixel_format"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the pixel format used by @texture. This is
+equivalent to:
+|[
+handle = clutter_texture_get_pixel_format (texture);
+if (handle != COGL_INVALID_HANDLE)
+format = cogl_texture_get_format (handle);
+]|</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglPixelFormat value</doc>
+          <type name="Cogl.PixelFormat" c:type="CoglPixelFormat"/>
+        </return-value>
+      </method>
+      <method name="get_repeat"
+              c:identifier="clutter_texture_get_repeat"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the horizontal and vertical repeat values set
+using clutter_texture_set_repeat()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="repeat_x"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the horizontal repeat</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="repeat_y"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the vertical repeat</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_sync_size"
+              c:identifier="clutter_texture_get_sync_size"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the value set with clutter_texture_set_sync_size()
+preferred size of the underlying image data</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #ClutterTexture should have the same</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_area_from_rgb_data"
+              c:identifier="clutter_texture_set_area_from_rgb_data"
+              version="0.6"
+              throws="1">
+        <doc xml:whitespace="preserve">Updates a sub-region of the pixel data in a #ClutterTexture.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, %FALSE on failure.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Image data in RGB type colorspace.</doc>
+            <type name="guint8" c:type="guchar*"/>
+          </parameter>
+          <parameter name="has_alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Set to TRUE if image data has an alpha channel.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate of upper left corner of region to update.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate of upper left corner of region to update.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Width in pixels of region to update.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Height in pixels of region to update.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="rowstride" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Distance in bytes between row starts on source buffer.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="bpp" transfer-ownership="none">
+            <doc xml:whitespace="preserve">bytes per pixel (Currently only 3 and 4 supported, depending on @has_alpha)</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#ClutterTextureFlags</doc>
+            <type name="TextureFlags" c:type="ClutterTextureFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_cogl_material"
+              c:identifier="clutter_texture_set_cogl_material"
+              version="0.8">
+        <doc xml:whitespace="preserve">Replaces the underlying Cogl material drawn by this actor with
+handle is no longer needed it should be deref'd with
+cogl_handle_unref. Texture data is attached to the material so
+calling this function also replaces the Cogl
+texture. #ClutterTexture requires that the material have a texture
+layer so you should set one on the material before calling this
+function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cogl_material" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A CoglHandle for a material</doc>
+            <type name="Cogl.Handle" c:type="CoglHandle"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_cogl_texture"
+              c:identifier="clutter_texture_set_cogl_texture"
+              version="0.8">
+        <doc xml:whitespace="preserve">Replaces the underlying COGL texture drawn by this actor with
+no longer needed it should be deref'd with cogl_handle_unref.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cogl_tex" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A CoglHandle for a texture</doc>
+            <type name="Cogl.Handle" c:type="CoglHandle"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_filter_quality"
+              c:identifier="clutter_texture_set_filter_quality"
+              version="0.8">
+        <doc xml:whitespace="preserve">Sets the filter quality when scaling a texture. The quality is an
+enumeration currently the following values are supported:
+%CLUTTER_TEXTURE_QUALITY_LOW which is fast but only uses nearest neighbour
+interpolation. %CLUTTER_TEXTURE_QUALITY_MEDIUM which is computationally a
+bit more expensive (bilinear interpolation), and
+%CLUTTER_TEXTURE_QUALITY_HIGH which uses extra texture memory resources to
+improve scaled down rendering as well (by using mipmaps). The default value
+is %CLUTTER_TEXTURE_QUALITY_MEDIUM.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter_quality" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new filter quality value</doc>
+            <type name="TextureQuality" c:type="ClutterTextureQuality"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_file"
+              c:identifier="clutter_texture_set_from_file"
+              version="0.8"
+              throws="1">
+        <doc xml:whitespace="preserve">Sets the #ClutterTexture image data from an image file. In case of
+failure, %FALSE is returned and @error is set.
+If #ClutterTexture:load-async is set to %TRUE, this function
+will return as soon as possible, and the actual image loading
+from disk will be performed asynchronously. #ClutterTexture::size-change
+will be emitten when the size of the texture is available and
+#ClutterTexture::load-finished will be emitted when the image has been
+loaded or if an error occurred.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the image was successfully loaded and set</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The filename of the image in GLib file name encoding</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_rgb_data"
+              c:identifier="clutter_texture_set_from_rgb_data"
+              version="0.4."
+              throws="1">
+        <doc xml:whitespace="preserve">Sets #ClutterTexture image data.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, %FALSE on failure.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Image data in RGBA type colorspace.</doc>
+            <type name="guint8" c:type="guchar*"/>
+          </parameter>
+          <parameter name="has_alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Set to TRUE if image data has an alpha channel.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Width in pixels of image data.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Height in pixels of image data</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="rowstride" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Distance in bytes between row starts.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="bpp" transfer-ownership="none">
+            <doc xml:whitespace="preserve">bytes per pixel (Currently only 3 and 4 supported, depending on @has_alpha)</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#ClutterTextureFlags</doc>
+            <type name="TextureFlags" c:type="ClutterTextureFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_yuv_data"
+              c:identifier="clutter_texture_set_from_yuv_data"
+              version="0.4"
+              throws="1">
+        <doc xml:whitespace="preserve">Sets a #ClutterTexture from YUV image data. If an error occurred,
+%FALSE is returned and @error is set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the texture was successfully updated</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Image data in YUV type colorspace.</doc>
+            <type name="guint8" c:type="guchar*"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Width in pixels of image data.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Height in pixels of image data</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#ClutterTextureFlags</doc>
+            <type name="TextureFlags" c:type="ClutterTextureFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_keep_aspect_ratio"
+              c:identifier="clutter_texture_set_keep_aspect_ratio"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets whether @texture should have a preferred size maintaining
+the aspect ratio of the underlying image</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="keep_aspect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE to maintain aspect ratio</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_load_async"
+              c:identifier="clutter_texture_set_load_async"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets whether @texture should use a worker thread to load the data
+from disk asynchronously. Setting @load_async to %TRUE will make
+clutter_texture_set_from_file() return immediately.
+See the #ClutterTexture:load-async property documentation, and
+clutter_texture_set_load_data_async().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="load_async" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the texture should asynchronously load data from a filename</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_load_data_async"
+              c:identifier="clutter_texture_set_load_data_async"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets whether @texture should use a worker thread to load the data
+from disk asynchronously. Setting @load_async to %TRUE will make
+clutter_texture_set_from_file() block until the #ClutterTexture has
+determined the width and height of the image data.
+See the #ClutterTexture:load-async property documentation, and
+clutter_texture_set_load_async().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="load_async" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the texture should asynchronously load data from a filename</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_pick_with_alpha"
+              c:identifier="clutter_texture_set_pick_with_alpha"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets whether @texture should have it's shape defined by the alpha
+channel when picking.
+Be aware that this is a bit more costly than the default picking
+due to the texture lookup, extra test against the alpha value and
+the fact that it will also interrupt the batching of geometry done
+internally.
+Also there is currently no control over the threshold used to
+determine what value of alpha is considered pickable, and so only
+fully opaque parts of the texture will react to picking.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pick_with_alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the alpha channel should affect the picking shape</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_repeat"
+              c:identifier="clutter_texture_set_repeat"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets whether the @texture should repeat horizontally or
+vertically when the actor size is bigger than the image size</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="repeat_x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the texture should repeat horizontally</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="repeat_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the texture should repeat vertically</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sync_size"
+              c:identifier="clutter_texture_set_sync_size"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets whether @texture should have the same preferred size as the
+underlying image data.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sync_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the texture should have the same size of the underlying image data</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="cogl-material"
+                introspectable="0"
+                writable="1"
+                transfer-ownership="none">
+        <type/>
+      </property>
+      <property name="cogl-texture"
+                introspectable="0"
+                writable="1"
+                transfer-ownership="none">
+        <type/>
+      </property>
+      <property name="disable-slicing"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="filename" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The path of the file containing the image data to be displayed by
+the texture.
+This property is unset when using the clutter_texture_set_from_*_data()
+family of functions.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="filter-quality"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <type name="TextureQuality"/>
+      </property>
+      <property name="keep-aspect-ratio"
+                writable="1"
+                transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="load-async"
+                version="1.0"
+                readable="0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Tries to load a texture from a filename by using a local thread to perform
+the read operations. The initially created texture has dimensions 0x0 when
+the true size becomes available the #ClutterTexture::size-change signal is
+emitted and when the image has completed loading the
+#ClutterTexture::load-finished signal is emitted.
+Threading is only enabled if g_thread_init() has been called prior to
+clutter_init(), otherwise #ClutterTexture will use the main loop to load
+the image.
+The upload of the texture data on the GL pipeline is not asynchronous, as
+it must be performed from within the same thread that called
+clutter_main().</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="load-data-async"
+                version="1.0"
+                readable="0"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Like #ClutterTexture:load-async but loads the width and height
+synchronously causing some blocking.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="pick-with-alpha" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="pixel-format" transfer-ownership="none">
+        <type name="Cogl.PixelFormat"/>
+      </property>
+      <property name="repeat-x" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="repeat-y" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="sync-size" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="tile-waste" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <field name="parent" readable="0" private="1">
+        <type name="Actor" c:type="ClutterActor"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="TexturePrivate" c:type="ClutterTexturePrivate*"/>
+      </field>
+      <glib:signal name="load-finished" version="1.0">
+        <doc xml:whitespace="preserve">The ::load-finished signal is emitted when a texture load has
+completed. If there was an error during loading, @error will
+be set, otherwise it will be %NULL</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="error" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A set error, or %NULL</doc>
+            <type name="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="pixbuf-change">
+        <doc xml:whitespace="preserve">The ::pixbuf-change signal is emitted each time the pixbuf
+used by @texture changes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="size-change">
+        <doc xml:whitespace="preserve">The ::size-change signal is emitted each time the size of the
+pixbuf used by @texture changes.  The new size is given as
+argument to the callback.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the width of the new texture</doc>
+            <type name="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the height of the new texture</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="TextureClass"
+            c:type="ClutterTextureClass"
+            glib:is-gtype-struct-for="Texture"
+            version="0.1">
+      <doc xml:whitespace="preserve">The #ClutterTextureClass structure contains only private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="ActorClass" c:type="ClutterActorClass"/>
+      </field>
+      <field name="size_change">
+        <callback name="size_change">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="texture" transfer-ownership="none">
+              <type name="Texture" c:type="ClutterTexture*"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pixbuf_change">
+        <callback name="pixbuf_change">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="texture" transfer-ownership="none">
+              <type name="Texture" c:type="ClutterTexture*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="load_finished">
+        <callback name="load_finished">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="texture" transfer-ownership="none">
+              <type name="Texture" c:type="ClutterTexture*"/>
+            </parameter>
+            <parameter name="error" transfer-ownership="none">
+              <type name="GLib.Error" c:type="GError*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_texture1" introspectable="0">
+        <callback name="_clutter_texture1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_texture2" introspectable="0">
+        <callback name="_clutter_texture2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_texture3" introspectable="0">
+        <callback name="_clutter_texture3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_texture4" introspectable="0">
+        <callback name="_clutter_texture4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_texture5" introspectable="0">
+        <callback name="_clutter_texture5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="TextureError"
+                 version="0.4"
+                 glib:type-name="ClutterTextureError"
+                 glib:get-type="clutter_texture_error_get_type"
+                 c:type="ClutterTextureError"
+                 glib:error-quark="clutter_texture_error_quark">
+      <doc xml:whitespace="preserve">Error enumeration for #ClutterTexture</doc>
+      <member name="out_of_memory"
+              value="0"
+              c:identifier="CLUTTER_TEXTURE_ERROR_OUT_OF_MEMORY"
+              glib:nick="out-of-memory"/>
+      <member name="no_yuv"
+              value="1"
+              c:identifier="CLUTTER_TEXTURE_ERROR_NO_YUV"
+              glib:nick="no-yuv"/>
+      <member name="bad_format"
+              value="2"
+              c:identifier="CLUTTER_TEXTURE_ERROR_BAD_FORMAT"
+              glib:nick="bad-format"/>
+    </enumeration>
+    <bitfield name="TextureFlags"
+              version="0.4"
+              glib:type-name="ClutterTextureFlags"
+              glib:get-type="clutter_texture_flags_get_type"
+              c:type="ClutterTextureFlags">
+      <doc xml:whitespace="preserve">Flags for clutter_texture_set_from_rgb_data() and
+clutter_texture_set_from_yuv_data().</doc>
+      <member name="none"
+              value="0"
+              c:identifier="CLUTTER_TEXTURE_NONE"
+              glib:nick="none"/>
+      <member name="rgb_flag_bgr"
+              value="2"
+              c:identifier="CLUTTER_TEXTURE_RGB_FLAG_BGR"
+              glib:nick="rgb-flag-bgr"/>
+      <member name="rgb_flag_premult"
+              value="4"
+              c:identifier="CLUTTER_TEXTURE_RGB_FLAG_PREMULT"
+              glib:nick="rgb-flag-premult"/>
+      <member name="yuv_flag_yuv2"
+              value="8"
+              c:identifier="CLUTTER_TEXTURE_YUV_FLAG_YUV2"
+              glib:nick="yuv-flag-yuv2"/>
+    </bitfield>
+    <record name="TexturePrivate" c:type="ClutterTexturePrivate" disguised="1">
+    </record>
+    <enumeration name="TextureQuality"
+                 version="0.8"
+                 glib:type-name="ClutterTextureQuality"
+                 glib:get-type="clutter_texture_quality_get_type"
+                 c:type="ClutterTextureQuality">
+      <doc xml:whitespace="preserve">Enumaration controlling the texture quality.</doc>
+      <member name="low"
+              value="0"
+              c:identifier="CLUTTER_TEXTURE_QUALITY_LOW"
+              glib:nick="low"/>
+      <member name="medium"
+              value="1"
+              c:identifier="CLUTTER_TEXTURE_QUALITY_MEDIUM"
+              glib:nick="medium"/>
+      <member name="high"
+              value="2"
+              c:identifier="CLUTTER_TEXTURE_QUALITY_HIGH"
+              glib:nick="high"/>
+    </enumeration>
+    <constant name="Thai_baht" value="3551">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_bobaimai" value="3514">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_chochan" value="3496">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_chochang" value="3498">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_choching" value="3497">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_chochoe" value="3500">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_dochada" value="3502">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_dodek" value="3508">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_fofa" value="3517">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_fofan" value="3519">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_hohip" value="3531">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_honokhuk" value="3534">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_khokhai" value="3490">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_khokhon" value="3493">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_khokhuat" value="3491">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_khokhwai" value="3492">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_khorakhang" value="3494">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_kokai" value="3489">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_lakkhangyao" value="3557">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_lekchet" value="3575">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_lekha" value="3573">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_lekhok" value="3574">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_lekkao" value="3577">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_leknung" value="3569">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_lekpaet" value="3576">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_leksam" value="3571">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_leksi" value="3572">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_leksong" value="3570">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_leksun" value="3568">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_lochula" value="3532">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_loling" value="3525">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_lu" value="3526">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_maichattawa" value="3563">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_maiek" value="3560">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_maihanakat" value="3537">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_maihanakat_maitho" value="3550">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_maitaikhu" value="3559">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_maitho" value="3561">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_maitri" value="3562">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_maiyamok" value="3558">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_moma" value="3521">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_ngongu" value="3495">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_nikhahit" value="3565">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_nonen" value="3507">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_nonu" value="3513">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_oang" value="3533">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_paiyannoi" value="3535">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_phinthu" value="3546">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_phophan" value="3518">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_phophung" value="3516">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_phosamphao" value="3520">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_popla" value="3515">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_rorua" value="3523">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_ru" value="3524">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_saraa" value="3536">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_saraaa" value="3538">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_saraae" value="3553">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_saraaimaimalai" value="3556">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_saraaimaimuan" value="3555">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_saraam" value="3539">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_sarae" value="3552">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_sarai" value="3540">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_saraii" value="3541">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_sarao" value="3554">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_sarau" value="3544">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_saraue" value="3542">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_sarauee" value="3543">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_sarauu" value="3545">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_sorusi" value="3529">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_sosala" value="3528">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_soso" value="3499">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_sosua" value="3530">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_thanthakhat" value="3564">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_thonangmontho" value="3505">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_thophuthao" value="3506">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_thothahan" value="3511">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_thothan" value="3504">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_thothong" value="3512">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_thothung" value="3510">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_topatak" value="3503">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_totao" value="3509">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_wowaen" value="3527">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_yoyak" value="3522">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thai_yoying" value="3501">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Thorn" value="222">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Time" value="269025183">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Timeline"
+           c:symbol-prefix="timeline"
+           c:type="ClutterTimeline"
+           version="0.2"
+           parent="GObject.Object"
+           glib:type-name="ClutterTimeline"
+           glib:get-type="clutter_timeline_get_type"
+           glib:type-struct="TimelineClass">
+      <doc xml:whitespace="preserve">The #ClutterTimeline structure contains only private data
+and should be accessed using the provided API</doc>
+      <constructor name="new"
+                   c:identifier="clutter_timeline_new"
+                   version="0.6">
+        <doc xml:whitespace="preserve">Creates a new #ClutterTimeline with a duration of @msecs.
+g_object_unref() when done using it</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #ClutterTimeline instance. Use</doc>
+          <type name="Timeline" c:type="ClutterTimeline*"/>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Duration of the timeline in milliseconds</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="completed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="marker_reached">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="marker_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="frame_num" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="new_frame">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="paused">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="started">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <method name="add_marker_at_time"
+              c:identifier="clutter_timeline_add_marker_at_time"
+              version="0.8">
+        <doc xml:whitespace="preserve">Adds a named marker that will be hit when the timeline has been
+running for @msecs milliseconds. Markers are unique string
+identifiers for a given time. Once @timeline reaches
+attached to that time.
+A marker can be removed with clutter_timeline_remove_marker(). The
+timeline can be advanced to a marker using
+clutter_timeline_advance_to_marker().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="marker_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the unique name for this marker</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="msecs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position of the marker in milliseconds</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="advance" c:identifier="clutter_timeline_advance">
+        <doc xml:whitespace="preserve">Advance timeline to the requested point. The point is given as a
+time in milliseconds since the timeline started.
+&lt;note&gt;&lt;para&gt;The @timeline will not emit the #ClutterTimeline::new-frame
+signal for the given time. The first ::new-frame signal after the call to
+clutter_timeline_advance() will be emit the skipped markers.
+&lt;/para&gt;&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Time to advance to</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="advance_to_marker"
+              c:identifier="clutter_timeline_advance_to_marker"
+              version="0.8">
+        <doc xml:whitespace="preserve">Advances @timeline to the time of the given @marker_name.
+&lt;note&gt;&lt;para&gt;Like clutter_timeline_advance(), this function will not
+emit the #ClutterTimeline::new-frame for the time where @marker_name
+is set, nor it will emit #ClutterTimeline::marker-reached for</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="marker_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the marker</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clone" c:identifier="clutter_timeline_clone" version="0.4">
+        <doc xml:whitespace="preserve">Create a new #ClutterTimeline instance which has property values
+matching that of supplied timeline. The cloned timeline will not
+be started and will not be positioned to the current position of
+from @timeline</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #ClutterTimeline, cloned</doc>
+          <type name="Timeline" c:type="ClutterTimeline*"/>
+        </return-value>
+      </method>
+      <method name="get_auto_reverse"
+              c:identifier="clutter_timeline_get_auto_reverse"
+              version="1.6">
+        <doc xml:whitespace="preserve">Retrieves the value set by clutter_timeline_set_auto_reverse().
+%FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the timeline should automatically reverse, and</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_delay"
+              c:identifier="clutter_timeline_get_delay"
+              version="0.4">
+        <doc xml:whitespace="preserve">Retrieves the delay set using clutter_timeline_set_delay().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the delay in milliseconds.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_delta"
+              c:identifier="clutter_timeline_get_delta"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the amount of time elapsed since the last
+ClutterTimeline::new-frame signal.
+This function is only useful inside handlers for the ::new-frame
+signal, and its behaviour is undefined if the timeline is not
+playing.
+last frame</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the amount of time in milliseconds elapsed since the</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_direction"
+              c:identifier="clutter_timeline_get_direction"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the direction of the timeline set with
+clutter_timeline_set_direction().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the direction of the timeline</doc>
+          <type name="TimelineDirection" c:type="ClutterTimelineDirection"/>
+        </return-value>
+      </method>
+      <method name="get_duration"
+              c:identifier="clutter_timeline_get_duration"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves the duration of a #ClutterTimeline in milliseconds.
+See clutter_timeline_set_duration().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the duration of the timeline, in milliseconds.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_elapsed_time"
+              c:identifier="clutter_timeline_get_elapsed_time">
+        <doc xml:whitespace="preserve">Request the current time position of the timeline.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">current elapsed time in milliseconds.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_loop" c:identifier="clutter_timeline_get_loop">
+        <doc xml:whitespace="preserve">Gets whether @timeline is looping</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the timeline is looping</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_progress"
+              c:identifier="clutter_timeline_get_progress"
+              version="0.6">
+        <doc xml:whitespace="preserve">The position of the timeline in a [0, 1] interval.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the position of the timeline.</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="has_marker"
+              c:identifier="clutter_timeline_has_marker"
+              version="0.8">
+        <doc xml:whitespace="preserve">Checks whether @timeline has a marker set with the given name.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the marker was found</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="marker_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the marker</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_playing" c:identifier="clutter_timeline_is_playing">
+        <doc xml:whitespace="preserve">Queries state of a #ClutterTimeline.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if timeline is currently playing</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="list_markers"
+              c:identifier="clutter_timeline_list_markers"
+              version="0.8">
+        <doc xml:whitespace="preserve">Retrieves the list of markers at time @msecs. If @frame_num is a
+negative integer, all the markers attached to @timeline will be
+returned.
+a newly allocated, %NULL terminated string array containing the names
+of the markers. Use g_strfreev() when done.</doc>
+        <return-value transfer-ownership="full">
+          <array length="1" c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the time to check, or -1</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="n_markers"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">the number of markers returned</doc>
+            <type name="gsize" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pause" c:identifier="clutter_timeline_pause">
+        <doc xml:whitespace="preserve">Pauses the #ClutterTimeline on current frame</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="remove_marker"
+              c:identifier="clutter_timeline_remove_marker"
+              version="0.8">
+        <doc xml:whitespace="preserve">Removes @marker_name, if found, from @timeline.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="marker_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the marker to remove</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="rewind" c:identifier="clutter_timeline_rewind">
+        <doc xml:whitespace="preserve">Rewinds #ClutterTimeline to the first frame if its direction is
+%CLUTTER_TIMELINE_FORWARD and the last frame if it is
+%CLUTTER_TIMELINE_BACKWARD.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_auto_reverse"
+              c:identifier="clutter_timeline_set_auto_reverse"
+              version="1.6">
+        <doc xml:whitespace="preserve">Sets whether @timeline should reverse the direction after the
+emission of the #ClutterTimeline::completed signal.
+Setting the #ClutterTimeline:reverse property to %TRUE is the
+equivalent of connecting a callback to the #ClutterTimeline::completed
+signal and changing the direction of the timeline from that callback;
+for instance, this code:
+|[
+static void
+reverse_timeline (ClutterTimeline *timeline)
+{
+ClutterTimelineDirection dir = clutter_timeline_get_direction (timeline);
+if (dir == CLUTTER_TIMELINE_FORWARD)
+dir = CLUTTER_TIMELINE_BACKWARD;
+else
+dir = CLUTTER_TIMELINE_FORWARD;
+clutter_timeline_set_direction (timeline, dir);
+}
+...
+timeline = clutter_timeline_new (1000);
+clutter_timeline_set_loop (timeline);
+g_signal_connect (timeline, "completed",
+G_CALLBACK (reverse_timeline),
+NULL);
+]|
+can be effectively replaced by:
+|[
+timeline = clutter_timeline_new (1000);
+clutter_timeline_set_loop (timeline);
+clutter_timeline_set_auto_reverse (timeline);
+]|</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="reverse" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the @timeline should reverse the direction</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_delay"
+              c:identifier="clutter_timeline_set_delay"
+              version="0.4">
+        <doc xml:whitespace="preserve">Sets the delay, in milliseconds, before @timeline should start.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">delay in milliseconds</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_direction"
+              c:identifier="clutter_timeline_set_direction"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets the direction of @timeline, either %CLUTTER_TIMELINE_FORWARD or
+%CLUTTER_TIMELINE_BACKWARD.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the direction of the timeline</doc>
+            <type name="TimelineDirection" c:type="ClutterTimelineDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_duration"
+              c:identifier="clutter_timeline_set_duration"
+              version="0.6">
+        <doc xml:whitespace="preserve">Sets the duration of the timeline, in milliseconds. The speed
+of the timeline depends on the ClutterTimeline:fps setting.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">duration of the timeline in milliseconds</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_loop" c:identifier="clutter_timeline_set_loop">
+        <doc xml:whitespace="preserve">Sets whether @timeline should loop.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="loop" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE for enable looping</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="skip" c:identifier="clutter_timeline_skip">
+        <doc xml:whitespace="preserve">Advance timeline by the requested time in milliseconds</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Amount of time to skip</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="start" c:identifier="clutter_timeline_start">
+        <doc xml:whitespace="preserve">Starts the #ClutterTimeline playing.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="stop" c:identifier="clutter_timeline_stop">
+        <doc xml:whitespace="preserve">Stops the #ClutterTimeline and moves to frame 0</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="auto-reverse"
+                version="1.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If the direction of the timeline should be automatically reversed
+when reaching the end.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="delay"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">A delay, in milliseconds, that should be observed by the
+timeline before actually starting.</doc>
+        <type name="guint"/>
+      </property>
+      <property name="direction"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The direction of the timeline, either %CLUTTER_TIMELINE_FORWARD or
+%CLUTTER_TIMELINE_BACKWARD.</doc>
+        <type name="TimelineDirection"/>
+      </property>
+      <property name="duration"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Duration of the timeline in milliseconds, depending on the
+ClutterTimeline:fps value.</doc>
+        <type name="guint"/>
+      </property>
+      <property name="loop" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the timeline should automatically rewind and restart.</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="parent" readable="0" private="1">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="TimelinePrivate" c:type="ClutterTimelinePrivate*"/>
+      </field>
+      <glib:signal name="completed">
+        <doc xml:whitespace="preserve">The ::completed signal is emitted when the timeline reaches the
+number of frames specified by the ClutterTimeline:num-frames property.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="marker-reached" version="0.8">
+        <doc xml:whitespace="preserve">The ::marker-reached signal is emitted each time a timeline
+reaches a marker set with
+clutter_timeline_add_marker_at_time(). This signal is detailed
+with the name of the marker as well, so it is possible to connect
+a callback to the ::marker-reached signal for a specific marker
+with:
+&lt;informalexample&gt;&lt;programlisting&gt;
+clutter_timeline_add_marker_at_time (timeline, "foo", 500);
+clutter_timeline_add_marker_at_time (timeline, "bar", 750);
+g_signal_connect (timeline, "marker-reached",
+G_CALLBACK (each_marker_reached), NULL);
+g_signal_connect (timeline, "marker-reached::foo",
+G_CALLBACK (foo_marker_reached), NULL);
+g_signal_connect (timeline, "marker-reached::bar",
+G_CALLBACK (bar_marker_reached), NULL);
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+In the example, the first callback will be invoked for both
+the "foo" and "bar" marker, while the second and third callbacks
+will be invoked for the "foo" or "bar" markers, respectively.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="marker_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the marker reached</doc>
+            <type name="utf8"/>
+          </parameter>
+          <parameter name="msecs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the elapsed time</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="new-frame">
+        <doc xml:whitespace="preserve">The ::new-frame signal is emitted for each timeline running
+timeline before a new frame is drawn to give animations a chance
+to update the scene.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="msecs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the elapsed time between 0 and duration</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="paused">
+        <doc xml:whitespace="preserve">The ::paused signal is emitted when clutter_timeline_pause() is invoked.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="started">
+        <doc xml:whitespace="preserve">The ::started signal is emitted when the timeline starts its run.
+This might be as soon as clutter_timeline_start() is invoked or
+after the delay set in the ClutterTimeline:delay property has
+expired.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="TimelineClass"
+            c:type="ClutterTimelineClass"
+            glib:is-gtype-struct-for="Timeline"
+            version="0.2">
+      <doc xml:whitespace="preserve">The #ClutterTimelineClass structure contains only private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="started">
+        <callback name="started">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="timeline" transfer-ownership="none">
+              <type name="Timeline" c:type="ClutterTimeline*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="completed">
+        <callback name="completed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="timeline" transfer-ownership="none">
+              <type name="Timeline" c:type="ClutterTimeline*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="paused">
+        <callback name="paused">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="timeline" transfer-ownership="none">
+              <type name="Timeline" c:type="ClutterTimeline*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="new_frame">
+        <callback name="new_frame">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="timeline" transfer-ownership="none">
+              <type name="Timeline" c:type="ClutterTimeline*"/>
+            </parameter>
+            <parameter name="msecs" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="marker_reached">
+        <callback name="marker_reached">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="timeline" transfer-ownership="none">
+              <type name="Timeline" c:type="ClutterTimeline*"/>
+            </parameter>
+            <parameter name="marker_name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="frame_num" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_clutter_timeline_1" introspectable="0">
+        <callback name="_clutter_timeline_1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_timeline_2" introspectable="0">
+        <callback name="_clutter_timeline_2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_timeline_3" introspectable="0">
+        <callback name="_clutter_timeline_3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_timeline_4" introspectable="0">
+        <callback name="_clutter_timeline_4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_timeline_5" introspectable="0">
+        <callback name="_clutter_timeline_5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="TimelineDirection"
+                 version="0.6"
+                 glib:type-name="ClutterTimelineDirection"
+                 glib:get-type="clutter_timeline_direction_get_type"
+                 c:type="ClutterTimelineDirection">
+      <doc xml:whitespace="preserve">The direction of a #ClutterTimeline</doc>
+      <member name="forward"
+              value="0"
+              c:identifier="CLUTTER_TIMELINE_FORWARD"
+              glib:nick="forward"/>
+      <member name="backward"
+              value="1"
+              c:identifier="CLUTTER_TIMELINE_BACKWARD"
+              glib:nick="backward"/>
+    </enumeration>
+    <record name="TimelinePrivate"
+            c:type="ClutterTimelinePrivate"
+            disguised="1">
+    </record>
+    <record name="TimeoutPool"
+            c:type="ClutterTimeoutPool"
+            disguised="1"
+            version="0.6"
+            introspectable="0"
+            deprecated="1.6">
+      <doc xml:whitespace="preserve">&lt;structname&gt;ClutterTimeoutPool&lt;/structname&gt; is an opaque structure
+whose members cannot be directly accessed.</doc>
+      <method name="add"
+              c:identifier="clutter_timeout_pool_add"
+              version="0.4"
+              deprecated="1.6">
+        <doc xml:whitespace="preserve">Sets a function to be called at regular intervals, and puts it inside
+the @pool. The function is repeatedly called until it returns %FALSE,
+at which point the timeout is automatically destroyed and the function
+won't be called again. If @notify is not %NULL, the @notify function
+will be called. The first call to @func will be at the end of @interval.
+Since Clutter 0.8 this will try to compensate for delays. For
+example, if @func takes half the interval time to execute then the
+function will be called again half the interval time after it
+finished. Before version 0.8 it would not fire until a full
+interval after the function completes so the delay between calls
+would be @interval * 1.5. This function does not however try to
+invoke the function multiple times to catch up missing frames if
+Use clutter_timeout_pool_remove() to stop the timeout.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the ID (greater than 0) of the timeout inside the pool.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="fps" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the time between calls to the function, in frames per second</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <doc xml:whitespace="preserve">function to call</doc>
+            <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to pass to the function, or %NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">function to call when the timeout is removed, or %NULL</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove"
+              c:identifier="clutter_timeout_pool_remove"
+              version="0.4"
+              deprecated="1.6">
+        <doc xml:whitespace="preserve">Removes a timeout function with @id_ from the timeout pool. The id
+is the same returned when adding a function to the timeout pool with
+clutter_timeout_pool_add().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the id of the timeout to remove</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <constant name="ToDoList" value="269025055">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Tools" value="269025153">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="TopMenu" value="269025186">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="TouchpadOff" value="269025201">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="TouchpadOn" value="269025200">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="TouchpadToggle" value="269025193">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Touroku" value="65323">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Travel" value="269025154">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Tslash" value="940">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="U" value="85">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="UWB" value="269025174">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Uacute" value="218">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ubelowdot" value="16785124">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ubreve" value="733">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ucircumflex" value="219">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Udiaeresis" value="220">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Udoubleacute" value="475">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ugrave" value="217">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Uhook" value="16785126">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Uhorn" value="16777647">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Uhornacute" value="16785128">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Uhornbelowdot" value="16785136">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Uhorngrave" value="16785130">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Uhornhook" value="16785132">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Uhorntilde" value="16785134">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ukrainian_GHE_WITH_UPTURN" value="1725">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ukrainian_I" value="1718">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ukrainian_IE" value="1716">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ukrainian_YI" value="1719">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ukrainian_ghe_with_upturn" value="1709">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ukrainian_i" value="1702">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ukrainian_ie" value="1700">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ukrainian_yi" value="1703">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ukranian_I" value="1718">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ukranian_JE" value="1716">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ukranian_YI" value="1719">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ukranian_i" value="1702">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ukranian_je" value="1700">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ukranian_yi" value="1703">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Umacron" value="990">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Undo" value="65381">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ungrab" value="269024800">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <enumeration name="UnitType"
+                 version="1.0"
+                 glib:type-name="ClutterUnitType"
+                 glib:get-type="clutter_unit_type_get_type"
+                 c:type="ClutterUnitType">
+      <doc xml:whitespace="preserve">The type of unit in which a value is expressed
+This enumeration might be expanded at later date</doc>
+      <member name="pixel"
+              value="0"
+              c:identifier="CLUTTER_UNIT_PIXEL"
+              glib:nick="pixel"/>
+      <member name="em"
+              value="1"
+              c:identifier="CLUTTER_UNIT_EM"
+              glib:nick="em"/>
+      <member name="mm"
+              value="2"
+              c:identifier="CLUTTER_UNIT_MM"
+              glib:nick="mm"/>
+      <member name="point"
+              value="3"
+              c:identifier="CLUTTER_UNIT_POINT"
+              glib:nick="point"/>
+      <member name="cm"
+              value="4"
+              c:identifier="CLUTTER_UNIT_CM"
+              glib:nick="cm"/>
+    </enumeration>
+    <record name="Units"
+            c:type="ClutterUnits"
+            version="1.0"
+            glib:type-name="ClutterUnits"
+            glib:get-type="clutter_units_get_type"
+            c:symbol-prefix="units">
+      <doc xml:whitespace="preserve">An opaque structure, to be used to store sizing and positioning
+values along with their unit.</doc>
+      <field name="unit_type" readable="0" private="1">
+        <type name="UnitType" c:type="ClutterUnitType"/>
+      </field>
+      <field name="value" readable="0" private="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="pixels" readable="0" private="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="pixels_set" readable="0" private="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="serial" readable="0" private="1">
+        <type name="gint32" c:type="gint32"/>
+      </field>
+      <field name="__padding_1" readable="0" private="1">
+        <type name="gint32" c:type="gint32"/>
+      </field>
+      <field name="__padding_2" readable="0" private="1">
+        <type name="gint64" c:type="gint64"/>
+      </field>
+      <method name="copy" c:identifier="clutter_units_copy" version="1.0">
+        <doc xml:whitespace="preserve">Copies @units
+#ClutterUnits structure. Use clutter_units_free() to free
+the allocated resources</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created copy of a</doc>
+          <type name="Units" c:type="ClutterUnits*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="clutter_units_free" version="1.0">
+        <doc xml:whitespace="preserve">Frees the resources allocated by @units
+You should only call this function on a #ClutterUnits
+created using clutter_units_copy()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="from_cm"
+              c:identifier="clutter_units_from_cm"
+              version="1.2">
+        <doc xml:whitespace="preserve">Stores a value in centimeters inside @units</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cm" transfer-ownership="none">
+            <doc xml:whitespace="preserve">centimeters</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="from_em"
+              c:identifier="clutter_units_from_em"
+              version="1.0">
+        <doc xml:whitespace="preserve">Stores a value in em inside @units, using the default font
+name as returned by clutter_backend_get_font_name()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="em" transfer-ownership="none">
+            <doc xml:whitespace="preserve">em</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="from_em_for_font"
+              c:identifier="clutter_units_from_em_for_font"
+              version="1.0">
+        <doc xml:whitespace="preserve">Stores a value in em inside @units using @font_name</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font_name" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the font name and size</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="em" transfer-ownership="none">
+            <doc xml:whitespace="preserve">em</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="from_mm"
+              c:identifier="clutter_units_from_mm"
+              version="1.0">
+        <doc xml:whitespace="preserve">Stores a value in millimiters inside @units</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mm" transfer-ownership="none">
+            <doc xml:whitespace="preserve">millimeters</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="from_pixels"
+              c:identifier="clutter_units_from_pixels"
+              version="1.0">
+        <doc xml:whitespace="preserve">Stores a value in pixels inside @units</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="px" transfer-ownership="none">
+            <doc xml:whitespace="preserve">pixels</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="from_pt"
+              c:identifier="clutter_units_from_pt"
+              version="1.0">
+        <doc xml:whitespace="preserve">Stores a value in typographic points inside @units</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pt" transfer-ownership="none">
+            <doc xml:whitespace="preserve">typographic points</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="from_string"
+              c:identifier="clutter_units_from_string"
+              version="1.0">
+        <doc xml:whitespace="preserve">Parses a value and updates @units with it
+A #ClutterUnits expressed in string should match:
+|[
+| digit* sep digit+
+]|
+For instance, these are valid strings:
+|[
+10 px
+5.1 em
+24 pt
+12.6 mm
+.3 cm
+]|
+While these are not:
+|[
+42 cats
+omg!1!ponies
+]|
+&lt;note&gt;&lt;para&gt;If no unit is specified, pixels are assumed.&lt;/para&gt;&lt;/note&gt;
+and %FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the string was successfully parsed,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the string to convert</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_unit_type"
+              c:identifier="clutter_units_get_unit_type"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the unit type of the value stored inside @units</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a unit type</doc>
+          <type name="UnitType" c:type="ClutterUnitType"/>
+        </return-value>
+      </method>
+      <method name="get_unit_value"
+              c:identifier="clutter_units_get_unit_value"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the value stored inside @units</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the value stored inside a #ClutterUnits</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="to_pixels"
+              c:identifier="clutter_units_to_pixels"
+              version="1.0">
+        <doc xml:whitespace="preserve">Converts a value in #ClutterUnits to pixels</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the value in pixels</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="to_string"
+              c:identifier="clutter_units_to_string"
+              version="1.0">
+        <doc xml:whitespace="preserve">Converts @units into a string
+See clutter_units_from_string() for the units syntax and for
+examples of output
+&lt;note&gt;Fractional values are truncated to the second decimal
+position for em, mm and cm, and to the first decimal position for
+typographic points. Pixels are integers.&lt;/note&gt;
+#ClutterUnits value. Use g_free() to free the string</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated string containing the encoded</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+    </record>
+    <constant name="Uogonek" value="985">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Up" value="65362">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Uring" value="473">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="User1KB" value="269025157">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="User2KB" value="269025158">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="UserPB" value="269025156">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Utilde" value="989">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="V" value="86">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="VERSION" value="1.600000">
+      <type name="gdouble" c:type="gdouble"/>
+    </constant>
+    <constant name="VERSION_HEX" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="VERSION_S" value="1.6.14">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="VendorHome" value="269025076">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="Vertex"
+            c:type="ClutterVertex"
+            version="0.4"
+            glib:type-name="ClutterVertex"
+            glib:get-type="clutter_vertex_get_type"
+            c:symbol-prefix="vertex">
+      <doc xml:whitespace="preserve">Vertex of an actor in 3D space, expressed in pixels</doc>
+      <field name="x" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <field name="z" writable="1">
+        <type name="gfloat" c:type="gfloat"/>
+      </field>
+      <constructor name="new" c:identifier="clutter_vertex_new" version="1.0">
+        <doc xml:whitespace="preserve">Creates a new #ClutterVertex for the point in 3D space
+identified by the 3 coordinates @x, @y, @z
+clutter_vertex_free() to free the resources</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly allocate #ClutterVertex. Use</doc>
+          <type name="Vertex" c:type="ClutterVertex*"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X coordinate</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y coordinate</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="z" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Z coordinate</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy" c:identifier="clutter_vertex_copy" version="1.0">
+        <doc xml:whitespace="preserve">Copies @vertex
+clutter_vertex_free() to free the allocated resources</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated copy of #ClutterVertex. Use</doc>
+          <type name="Vertex" c:type="ClutterVertex*"/>
+        </return-value>
+      </method>
+      <method name="equal" c:identifier="clutter_vertex_equal" version="1.0">
+        <doc xml:whitespace="preserve">Compares @vertex_a and @vertex_b for equality</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the passed #ClutterVertex are equal</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="vertex_b" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterVertex</doc>
+            <type name="Vertex" c:type="ClutterVertex*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free" c:identifier="clutter_vertex_free" version="1.0">
+        <doc xml:whitespace="preserve">Frees a #ClutterVertex allocated using clutter_vertex_copy()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <constant name="Video" value="269025159">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="View" value="269025185">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="VoidSymbol" value="16777215">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="W" value="87">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="WINDOWING_GLX" value="1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="WINDOWING_X11" value="1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="WLAN" value="269025173">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="WWW" value="269025070">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Wacute" value="16785026">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="WakeUp" value="269025067">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Wcircumflex" value="16777588">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Wdiaeresis" value="16785028">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="WebCam" value="269025167">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Wgrave" value="16785024">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="WheelButton" value="269025160">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="WindowClear" value="269025109">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="WonSign" value="16785577">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Word" value="269025161">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="X" value="88">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <enumeration name="X11FilterReturn"
+                 glib:type-name="ClutterX11FilterReturn"
+                 glib:get-type="clutter_x11_filter_return_get_type"
+                 c:type="ClutterX11FilterReturn">
+      <member name="continue"
+              value="0"
+              c:identifier="CLUTTER_X11_FILTER_CONTINUE"
+              glib:nick="continue"/>
+      <member name="translate"
+              value="1"
+              c:identifier="CLUTTER_X11_FILTER_TRANSLATE"
+              glib:nick="translate"/>
+      <member name="remove"
+              value="2"
+              c:identifier="CLUTTER_X11_FILTER_REMOVE"
+              glib:nick="remove"/>
+    </enumeration>
+    <enumeration name="X11XInputEventTypes"
+                 glib:type-name="ClutterX11XInputEventTypes"
+                 glib:get-type="clutter_x11_xinput_event_types_get_type"
+                 c:type="ClutterX11XInputEventTypes">
+      <member name="key_press_event"
+              value="0"
+              c:identifier="CLUTTER_X11_XINPUT_KEY_PRESS_EVENT"
+              glib:nick="key-press-event"/>
+      <member name="key_release_event"
+              value="1"
+              c:identifier="CLUTTER_X11_XINPUT_KEY_RELEASE_EVENT"
+              glib:nick="key-release-event"/>
+      <member name="button_press_event"
+              value="2"
+              c:identifier="CLUTTER_X11_XINPUT_BUTTON_PRESS_EVENT"
+              glib:nick="button-press-event"/>
+      <member name="button_release_event"
+              value="3"
+              c:identifier="CLUTTER_X11_XINPUT_BUTTON_RELEASE_EVENT"
+              glib:nick="button-release-event"/>
+      <member name="motion_notify_event"
+              value="4"
+              c:identifier="CLUTTER_X11_XINPUT_MOTION_NOTIFY_EVENT"
+              glib:nick="motion-notify-event"/>
+      <member name="last_event"
+              value="5"
+              c:identifier="CLUTTER_X11_XINPUT_LAST_EVENT"
+              glib:nick="last-event"/>
+    </enumeration>
+    <constant name="Xabovedot" value="16785034">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Xfer" value="269025162">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Y" value="89">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Yacute" value="221">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ybelowdot" value="16785140">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ycircumflex" value="16777590">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ydiaeresis" value="5054">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Yellow" value="269025189">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ygrave" value="16785138">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Yhook" value="16785142">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Ytilde" value="16785144">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Z" value="90">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Zabovedot" value="431">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Zacute" value="428">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Zcaron" value="430">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Zen_Koho" value="65341">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Zenkaku" value="65320">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Zenkaku_Hankaku" value="65322">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ZoomIn" value="269025163">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ZoomOut" value="269025164">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="Zstroke" value="16777653">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="a" value="97">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="aacute" value="225">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="abelowdot" value="16785057">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="abovedot" value="511">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="abreve" value="483">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="abreveacute" value="16785071">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="abrevebelowdot" value="16785079">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="abrevegrave" value="16785073">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="abrevehook" value="16785075">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="abrevetilde" value="16785077">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="acircumflex" value="226">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="acircumflexacute" value="16785061">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="acircumflexbelowdot" value="16785069">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="acircumflexgrave" value="16785063">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="acircumflexhook" value="16785065">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="acircumflextilde" value="16785067">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="acute" value="180">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="adiaeresis" value="228">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ae" value="230">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="agrave" value="224">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ahook" value="16785059">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="amacron" value="992">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ampersand" value="38">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="aogonek" value="433">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="apostrophe" value="39">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="approxeq" value="16785992">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="approximate" value="2248">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="aring" value="229">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="asciicircum" value="94">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="asciitilde" value="126">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="asterisk" value="42">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="at" value="64">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="atilde" value="227">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="b" value="98">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="babovedot" value="16784899">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="backslash" value="92">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ballotcross" value="2804">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="bar" value="124">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="base_init" c:identifier="clutter_base_init">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <constant name="because" value="16785973">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="blank" value="2527">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="botintegral" value="2213">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="botleftparens" value="2220">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="botleftsqbracket" value="2216">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="botleftsummation" value="2226">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="botrightparens" value="2222">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="botrightsqbracket" value="2218">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="botrightsummation" value="2230">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="bott" value="2550">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="botvertsummationconnector" value="2228">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braceleft" value="123">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braceright" value="125">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="bracketleft" value="91">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="bracketright" value="93">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_blank" value="16787456">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dot_1" value="65521">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dot_10" value="65530">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dot_2" value="65522">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dot_3" value="65523">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dot_4" value="65524">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dot_5" value="65525">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dot_6" value="65526">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dot_7" value="65527">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dot_8" value="65528">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dot_9" value="65529">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1" value="16787457">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12" value="16787459">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_123" value="16787463">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1234" value="16787471">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12345" value="16787487">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_123456" value="16787519">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1234567" value="16787583">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12345678" value="16787711">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1234568" value="16787647">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_123457" value="16787551">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1234578" value="16787679">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_123458" value="16787615">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12346" value="16787503">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_123467" value="16787567">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1234678" value="16787695">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_123468" value="16787631">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12347" value="16787535">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_123478" value="16787663">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12348" value="16787599">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1235" value="16787479">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12356" value="16787511">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_123567" value="16787575">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1235678" value="16787703">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_123568" value="16787639">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12357" value="16787543">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_123578" value="16787671">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12358" value="16787607">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1236" value="16787495">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12367" value="16787559">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_123678" value="16787687">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12368" value="16787623">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1237" value="16787527">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12378" value="16787655">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1238" value="16787591">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_124" value="16787467">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1245" value="16787483">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12456" value="16787515">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_124567" value="16787579">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1245678" value="16787707">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_124568" value="16787643">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12457" value="16787547">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_124578" value="16787675">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12458" value="16787611">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1246" value="16787499">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12467" value="16787563">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_124678" value="16787691">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12468" value="16787627">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1247" value="16787531">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12478" value="16787659">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1248" value="16787595">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_125" value="16787475">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1256" value="16787507">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12567" value="16787571">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_125678" value="16787699">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12568" value="16787635">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1257" value="16787539">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12578" value="16787667">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1258" value="16787603">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_126" value="16787491">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1267" value="16787555">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_12678" value="16787683">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1268" value="16787619">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_127" value="16787523">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1278" value="16787651">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_128" value="16787587">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_13" value="16787461">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_134" value="16787469">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1345" value="16787485">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_13456" value="16787517">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_134567" value="16787581">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1345678" value="16787709">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_134568" value="16787645">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_13457" value="16787549">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_134578" value="16787677">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_13458" value="16787613">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1346" value="16787501">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_13467" value="16787565">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_134678" value="16787693">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_13468" value="16787629">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1347" value="16787533">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_13478" value="16787661">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1348" value="16787597">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_135" value="16787477">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1356" value="16787509">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_13567" value="16787573">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_135678" value="16787701">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_13568" value="16787637">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1357" value="16787541">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_13578" value="16787669">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1358" value="16787605">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_136" value="16787493">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1367" value="16787557">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_13678" value="16787685">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1368" value="16787621">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_137" value="16787525">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1378" value="16787653">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_138" value="16787589">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_14" value="16787465">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_145" value="16787481">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1456" value="16787513">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_14567" value="16787577">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_145678" value="16787705">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_14568" value="16787641">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1457" value="16787545">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_14578" value="16787673">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1458" value="16787609">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_146" value="16787497">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1467" value="16787561">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_14678" value="16787689">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1468" value="16787625">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_147" value="16787529">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1478" value="16787657">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_148" value="16787593">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_15" value="16787473">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_156" value="16787505">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1567" value="16787569">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_15678" value="16787697">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1568" value="16787633">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_157" value="16787537">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1578" value="16787665">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_158" value="16787601">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_16" value="16787489">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_167" value="16787553">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_1678" value="16787681">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_168" value="16787617">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_17" value="16787521">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_178" value="16787649">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_18" value="16787585">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2" value="16787458">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_23" value="16787462">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_234" value="16787470">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2345" value="16787486">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_23456" value="16787518">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_234567" value="16787582">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2345678" value="16787710">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_234568" value="16787646">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_23457" value="16787550">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_234578" value="16787678">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_23458" value="16787614">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2346" value="16787502">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_23467" value="16787566">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_234678" value="16787694">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_23468" value="16787630">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2347" value="16787534">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_23478" value="16787662">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2348" value="16787598">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_235" value="16787478">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2356" value="16787510">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_23567" value="16787574">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_235678" value="16787702">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_23568" value="16787638">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2357" value="16787542">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_23578" value="16787670">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2358" value="16787606">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_236" value="16787494">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2367" value="16787558">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_23678" value="16787686">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2368" value="16787622">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_237" value="16787526">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2378" value="16787654">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_238" value="16787590">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_24" value="16787466">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_245" value="16787482">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2456" value="16787514">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_24567" value="16787578">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_245678" value="16787706">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_24568" value="16787642">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2457" value="16787546">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_24578" value="16787674">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2458" value="16787610">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_246" value="16787498">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2467" value="16787562">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_24678" value="16787690">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2468" value="16787626">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_247" value="16787530">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2478" value="16787658">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_248" value="16787594">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_25" value="16787474">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_256" value="16787506">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2567" value="16787570">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_25678" value="16787698">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2568" value="16787634">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_257" value="16787538">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2578" value="16787666">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_258" value="16787602">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_26" value="16787490">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_267" value="16787554">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_2678" value="16787682">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_268" value="16787618">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_27" value="16787522">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_278" value="16787650">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_28" value="16787586">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_3" value="16787460">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_34" value="16787468">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_345" value="16787484">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_3456" value="16787516">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_34567" value="16787580">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_345678" value="16787708">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_34568" value="16787644">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_3457" value="16787548">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_34578" value="16787676">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_3458" value="16787612">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_346" value="16787500">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_3467" value="16787564">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_34678" value="16787692">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_3468" value="16787628">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_347" value="16787532">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_3478" value="16787660">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_348" value="16787596">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_35" value="16787476">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_356" value="16787508">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_3567" value="16787572">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_35678" value="16787700">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_3568" value="16787636">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_357" value="16787540">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_3578" value="16787668">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_358" value="16787604">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_36" value="16787492">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_367" value="16787556">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_3678" value="16787684">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_368" value="16787620">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_37" value="16787524">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_378" value="16787652">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_38" value="16787588">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_4" value="16787464">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_45" value="16787480">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_456" value="16787512">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_4567" value="16787576">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_45678" value="16787704">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_4568" value="16787640">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_457" value="16787544">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_4578" value="16787672">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_458" value="16787608">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_46" value="16787496">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_467" value="16787560">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_4678" value="16787688">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_468" value="16787624">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_47" value="16787528">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_478" value="16787656">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_48" value="16787592">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_5" value="16787472">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_56" value="16787504">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_567" value="16787568">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_5678" value="16787696">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_568" value="16787632">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_57" value="16787536">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_578" value="16787664">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_58" value="16787600">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_6" value="16787488">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_67" value="16787552">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_678" value="16787680">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_68" value="16787616">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_7" value="16787520">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_78" value="16787648">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="braille_dots_8" value="16787584">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="breve" value="418">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="brokenbar" value="166">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="c" value="99">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="cabovedot" value="741">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="cacute" value="486">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="cairo_set_source_color"
+              c:identifier="clutter_cairo_set_source_color"
+              version="1.0">
+      <doc xml:whitespace="preserve">Utility function for setting the source color of @cr using
+a #ClutterColor.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cr" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a Cairo context</doc>
+          <type name="cairo.Context" c:type="cairo_t*"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterColor</doc>
+          <type name="Color" c:type="ClutterColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="careof" value="2744">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="caret" value="2812">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="caron" value="439">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ccaron" value="488">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ccedilla" value="231">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ccircumflex" value="742">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="cedilla" value="184">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="cent" value="162">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="check_version"
+              c:identifier="clutter_check_version"
+              version="1.2">
+      <doc xml:whitespace="preserve">Run-time version check, to check the version the Clutter library
+that an application is currently linked against
+This is the run-time equivalent of the compile-time %CLUTTER_CHECK_VERSION
+pre-processor macro
+greater than (@major, @minor, @micro), and %FALSE otherwise</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the version of the Clutter library is</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="major" transfer-ownership="none">
+          <doc xml:whitespace="preserve">major version, like 1 in 1.2.3</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="minor" transfer-ownership="none">
+          <doc xml:whitespace="preserve">minor version, like 2 in 1.2.3</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="micro" transfer-ownership="none">
+          <doc xml:whitespace="preserve">micro version, like 3 in 1.2.3</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="checkerboard" value="2529">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="checkmark" value="2803">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="circle" value="3023">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="clear_glyph_cache"
+              c:identifier="clutter_clear_glyph_cache"
+              version="0.8">
+      <doc xml:whitespace="preserve">Clears the internal cache of glyphs used by the Pango
+renderer. This will free up some memory and GL texture
+resources. The cache will be automatically refilled as more text is
+drawn.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <constant name="club" value="2796">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="colon" value="58">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="color_equal"
+              c:identifier="clutter_color_equal"
+              version="0.2">
+      <doc xml:whitespace="preserve">Compares two #ClutterColor&lt;!-- --&gt;s and checks if they are the same.
+This function can be passed to g_hash_table_new() as the @key_equal_func
+parameter, when using #ClutterColor&lt;!-- --&gt;s as keys in a #GHashTable.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the two colors are the same.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="v1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterColor</doc>
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="v2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterColor</doc>
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="color_get_static"
+              c:identifier="clutter_color_get_static"
+              version="1.6">
+      <doc xml:whitespace="preserve">Retrieves a static color for the given @color name
+Static colors are created by Clutter and are guaranteed to always be
+available and valid
+is owned by Clutter and it should never be modified or freed</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a pointer to a static color; the returned pointer</doc>
+        <type name="Color" c:type="ClutterColor*"/>
+      </return-value>
+      <parameters>
+        <parameter name="color" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the named global color</doc>
+          <type name="StaticColor" c:type="ClutterStaticColor"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="color_hash"
+              c:identifier="clutter_color_hash"
+              version="1.0">
+      <doc xml:whitespace="preserve">Converts a #ClutterColor to a hash value.
+This function can be passed to g_hash_table_new() as the @hash_func
+parameter, when using #ClutterColor&lt;!-- --&gt;s as keys in a #GHashTable.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a hash value corresponding to the color</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterColor</doc>
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="comma" value="44">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="container_class_find_child_property"
+              c:identifier="clutter_container_class_find_child_property"
+              version="0.8">
+      <doc xml:whitespace="preserve">Looks up the #GParamSpec for a child property of @klass.
+if no such property exist.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #GParamSpec for the property or %NULL</doc>
+        <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="klass" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GObjectClass implementing the #ClutterContainer interface.</doc>
+          <type name="GObject.ObjectClass" c:type="GObjectClass*"/>
+        </parameter>
+        <parameter name="property_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a property name.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="container_class_list_child_properties"
+              c:identifier="clutter_container_class_list_child_properties"
+              version="0.8">
+      <doc xml:whitespace="preserve">Returns an array of #GParamSpec for all child properties.
+of #GParamSpec&lt;!-- --&gt;s which should be freed after use.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">an array</doc>
+        <array length="1" c:type="GParamSpec**">
+          <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="klass" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GObjectClass implementing the #ClutterContainer interface.</doc>
+          <type name="GObject.ObjectClass" c:type="GObjectClass*"/>
+        </parameter>
+        <parameter name="n_properties"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">return location for length of returned array.</doc>
+          <type name="guint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="containsas" value="16785931">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="copyright" value="169">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="cr" value="2532">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="crossinglines" value="2542">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="cuberoot" value="16785947">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="currency" value="164">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="cursor" value="2815">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="d" value="100">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dabovedot" value="16784907">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dagger" value="2801">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dcaron" value="495">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_A" value="65153">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_E" value="65155">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_I" value="65157">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_O" value="65159">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_U" value="65161">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_a" value="65152">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_abovecomma" value="65124">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_abovedot" value="65110">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_abovereversedcomma" value="65125">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_abovering" value="65112">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_acute" value="65105">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_belowbreve" value="65131">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_belowcircumflex" value="65129">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_belowcomma" value="65134">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_belowdiaeresis" value="65132">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_belowdot" value="65120">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_belowmacron" value="65128">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_belowring" value="65127">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_belowtilde" value="65130">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_breve" value="65109">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_capital_schwa" value="65163">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_caron" value="65114">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_cedilla" value="65115">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_circumflex" value="65106">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_currency" value="65135">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_dasia" value="65125">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_diaeresis" value="65111">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_doubleacute" value="65113">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_doublegrave" value="65126">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_e" value="65154">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_grave" value="65104">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_hook" value="65121">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_horn" value="65122">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_i" value="65156">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_invertedbreve" value="65133">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_iota" value="65117">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_macron" value="65108">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_o" value="65158">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_ogonek" value="65116">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_perispomeni" value="65107">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_psili" value="65124">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_semivoiced_sound" value="65119">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_small_schwa" value="65162">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_stroke" value="65123">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_tilde" value="65107">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_u" value="65160">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dead_voiced_sound" value="65118">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="decimalpoint" value="2749">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="degree" value="176">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="diaeresis" value="168">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="diamond" value="2797">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="digitspace" value="2725">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dintegral" value="16785964">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="division" value="247">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="do_event" c:identifier="clutter_do_event" version="0.4">
+      <doc xml:whitespace="preserve">Processes an event.
+The @event must be a valid #ClutterEvent and have a #ClutterStage
+associated to it.
+This function is only useful when embedding Clutter inside another
+toolkit, and it should never be called by applications.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="event" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterEvent.</doc>
+          <type name="Event" c:type="ClutterEvent*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="dollar" value="36">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="doubbaselinedot" value="2735">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="doubleacute" value="445">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="doubledagger" value="2802">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="doublelowquotemark" value="2814">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="downarrow" value="2302">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="downcaret" value="2984">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="downshoe" value="3030">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="downstile" value="3012">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="downtack" value="3010">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="dstroke" value="496">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="e" value="101">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="eabovedot" value="1004">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="eacute" value="233">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ebelowdot" value="16785081">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ecaron" value="492">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ecircumflex" value="234">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ecircumflexacute" value="16785087">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ecircumflexbelowdot" value="16785095">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ecircumflexgrave" value="16785089">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ecircumflexhook" value="16785091">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ecircumflextilde" value="16785093">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ediaeresis" value="235">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="egrave" value="232">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ehook" value="16785083">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="eightsubscript" value="16785544">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="eightsuperior" value="16785528">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="elementof" value="16785928">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ellipsis" value="2734">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="em3space" value="2723">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="em4space" value="2724">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="emacron" value="954">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="emdash" value="2729">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="emfilledcircle" value="2782">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="emfilledrect" value="2783">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="emopencircle" value="2766">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="emopenrectangle" value="2767">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="emptyset" value="16785925">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="emspace" value="2721">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="endash" value="2730">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="enfilledcircbullet" value="2790">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="enfilledsqbullet" value="2791">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="eng" value="959">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="enopencircbullet" value="2784">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="enopensquarebullet" value="2785">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="enspace" value="2722">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="eogonek" value="490">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="equal" value="61">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="eth" value="240">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="etilde" value="16785085">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="event_get" c:identifier="clutter_event_get" version="0.4">
+      <doc xml:whitespace="preserve">Pops an event off the event queue. Applications should not need to call 
+this.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">A #ClutterEvent or NULL if queue empty</doc>
+        <type name="Event" c:type="ClutterEvent*"/>
+      </return-value>
+    </function>
+    <function name="event_peek"
+              c:identifier="clutter_event_peek"
+              version="0.4">
+      <doc xml:whitespace="preserve">Returns a pointer to the first event from the event queue but 
+does not remove it.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">A #ClutterEvent or NULL if queue empty.</doc>
+        <type name="Event" c:type="ClutterEvent*"/>
+      </return-value>
+    </function>
+    <function name="events_pending"
+              c:identifier="clutter_events_pending"
+              version="0.4">
+      <doc xml:whitespace="preserve">Checks if events are pending in the event queue.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if there are pending events, FALSE otherwise.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <constant name="exclam" value="33">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="exclamdown" value="161">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="f" value="102">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="fabovedot" value="16784927">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="feature_available"
+              c:identifier="clutter_feature_available"
+              version="0.1.1">
+      <doc xml:whitespace="preserve">Checks whether @feature is available.  @feature can be a logical
+OR of #ClutterFeatureFlags.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if a feature is available</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="feature" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterFeatureFlags</doc>
+          <type name="FeatureFlags" c:type="ClutterFeatureFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="feature_get_all"
+              c:identifier="clutter_feature_get_all"
+              version="0.1.1">
+      <doc xml:whitespace="preserve">Returns all the supported features.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a logical OR of all the supported features.</doc>
+        <type name="FeatureFlags" c:type="ClutterFeatureFlags"/>
+      </return-value>
+    </function>
+    <constant name="femalesymbol" value="2808">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ff" value="2531">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="figdash" value="2747">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="filledlefttribullet" value="2780">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="filledrectbullet" value="2779">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="filledrighttribullet" value="2781">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="filledtribulletdown" value="2793">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="filledtribulletup" value="2792">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="fiveeighths" value="2757">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="fivesixths" value="2743">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="fivesubscript" value="16785541">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="fivesuperior" value="16785525">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="fourfifths" value="2741">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="foursubscript" value="16785540">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="foursuperior" value="16785524">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="fourthroot" value="16785948">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="frame_source_add"
+              c:identifier="clutter_frame_source_add"
+              shadowed-by="frame_source_add_full"
+              version="0.8"
+              introspectable="0"
+              deprecated="1.6">
+      <doc xml:whitespace="preserve">Simple wrapper around clutter_frame_source_add_full().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the ID (greater than 0) of the event source.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="fps" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of times per second to call the function</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" closure="2">
+          <doc xml:whitespace="preserve">function to call</doc>
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data to pass to the function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="frame_source_add_full"
+              c:identifier="clutter_frame_source_add_full"
+              shadows="frame_source_add"
+              version="0.8"
+              deprecated="1.6">
+      <doc xml:whitespace="preserve">Sets a function to be called at regular intervals with the given
+priority.  The function is called repeatedly until it returns
+%FALSE, at which point the timeout is automatically destroyed and
+the function will not be called again.  The @notify function is
+called when the timeout is destroyed.  The first call to the
+function will be at the end of the first @interval.
+This function is similar to g_timeout_add_full() except that it
+will try to compensate for delays. For example, if @func takes half
+the interval time to execute then the function will be called again
+half the interval time after it finished. In contrast
+g_timeout_add_full() would not fire until a full interval after the
+function completes so the delay between calls would be 1.0 / @fps *
+1.5. This function does not however try to invoke the function
+multiple times to catch up missing frames if @func takes more than</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the ID (greater than 0) of the event source.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="priority" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the priority of the frame source. Typically this will be in the range between %G_PRIORITY_DEFAULT and %G_PRIORITY_HIGH.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="fps" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of times per second to call the function</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="3"
+                   destroy="4">
+          <doc xml:whitespace="preserve">function to call</doc>
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data to pass to the function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify" transfer-ownership="none" scope="async">
+          <doc xml:whitespace="preserve">function to call when the timeout source is removed</doc>
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="function" value="2294">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="g" value="103">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="gabovedot" value="757">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="gbreve" value="699">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="gcaron" value="16777703">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="gcedilla" value="955">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="gcircumflex" value="760">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="get_accessibility_enabled"
+              c:identifier="clutter_get_accessibility_enabled"
+              version="1.4">
+      <doc xml:whitespace="preserve">Returns whether Clutter has accessibility support enabled.  As
+least, a value of TRUE means that there are a proper AtkUtil
+implementation available</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if Clutter has accessibility support enabled</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="get_actor_by_gid"
+              c:identifier="clutter_get_actor_by_gid"
+              version="0.6">
+      <doc xml:whitespace="preserve">Retrieves the #ClutterActor with @id_.
+The returned actor does not have its reference count increased.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the actor with the passed id or %NULL.</doc>
+        <type name="Actor" c:type="ClutterActor*"/>
+      </return-value>
+      <parameters>
+        <parameter name="id_" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterActor unique id.</doc>
+          <type name="guint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_current_event"
+              c:identifier="clutter_get_current_event"
+              version="1.2">
+      <doc xml:whitespace="preserve">If an event is currently being processed, return that event.
+This function is intended to be used to access event state
+that might not be exposed by higher-level widgets.  For
+example, to get the key modifier state from a Button 'clicked'
+event.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The current ClutterEvent, or %NULL if none</doc>
+        <type name="Event" c:type="ClutterEvent*"/>
+      </return-value>
+    </function>
+    <function name="get_current_event_time"
+              c:identifier="clutter_get_current_event_time"
+              version="1.0">
+      <doc xml:whitespace="preserve">Retrieves the timestamp of the last event, if there is an
+event or if the event has a timestamp.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the event timestamp, or %CLUTTER_CURRENT_TIME</doc>
+        <type name="guint32" c:type="guint32"/>
+      </return-value>
+    </function>
+    <function name="get_debug_enabled"
+              c:identifier="clutter_get_debug_enabled">
+      <doc xml:whitespace="preserve">Check if clutter has debugging turned on.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if debugging is turned on, FALSE otherwise.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="get_default_backend"
+              c:identifier="clutter_get_default_backend"
+              version="0.4">
+      <doc xml:whitespace="preserve">Retrieves the default #ClutterBackend used by Clutter. The
+#ClutterBackend holds backend-specific configuration options.
+not ref or unref the returned object. Applications should rarely
+need to use this.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the default backend. You should</doc>
+        <type name="Backend" c:type="ClutterBackend*"/>
+      </return-value>
+    </function>
+    <function name="get_default_frame_rate"
+              c:identifier="clutter_get_default_frame_rate"
+              version="0.6">
+      <doc xml:whitespace="preserve">Retrieves the default frame rate. See clutter_set_default_frame_rate().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the default frame rate</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+    </function>
+    <function name="get_default_text_direction"
+              c:identifier="clutter_get_default_text_direction"
+              version="1.2">
+      <doc xml:whitespace="preserve">Retrieves the default direction for the text. The text direction is
+determined by the locale and/or by the %CLUTTER_TEXT_DIRECTION environment
+variable
+The default text direction can be overridden on a per-actor basis by using
+clutter_actor_set_text_direction()</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the default text direction</doc>
+        <type name="TextDirection" c:type="ClutterTextDirection"/>
+      </return-value>
+    </function>
+    <function name="get_font_flags"
+              c:identifier="clutter_get_font_flags"
+              version="1.0">
+      <doc xml:whitespace="preserve">Gets the current font flags for rendering text. See
+clutter_set_font_flags().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The font flags</doc>
+        <type name="FontFlags" c:type="ClutterFontFlags"/>
+      </return-value>
+    </function>
+    <function name="get_font_map"
+              c:identifier="clutter_get_font_map"
+              version="1.0">
+      <doc xml:whitespace="preserve">Retrieves the #PangoFontMap instance used by Clutter.
+You can use the global font map object with the COGL
+Pango API.
+value is owned by Clutter and it should never be unreferenced.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the #PangoFontMap instance. The returned</doc>
+        <type name="Pango.FontMap" c:type="PangoFontMap*"/>
+      </return-value>
+    </function>
+    <function name="get_input_device_for_id"
+              c:identifier="clutter_get_input_device_for_id"
+              version="0.8">
+      <doc xml:whitespace="preserve">Retrieves the #ClutterInputDevice from its @id_. This is a convenience
+wrapper for clutter_device_manager_get_device() and it is functionally
+equivalent to:
+|[
+ClutterDeviceManager *manager;
+ClutterInputDevice *device;
+manager = clutter_device_manager_get_default ();
+device = clutter_device_manager_get_device (manager, id);
+]|</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a #ClutterInputDevice, or %NULL</doc>
+        <type name="InputDevice" c:type="ClutterInputDevice*"/>
+      </return-value>
+      <parameters>
+        <parameter name="id_" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the unique id for a device</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_keyboard_grab"
+              c:identifier="clutter_get_keyboard_grab"
+              version="0.6">
+      <doc xml:whitespace="preserve">Queries the current keyboard grab of clutter.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the actor currently holding the keyboard grab, or NULL if there is no grab.</doc>
+        <type name="Actor" c:type="ClutterActor*"/>
+      </return-value>
+    </function>
+    <function name="get_motion_events_enabled"
+              c:identifier="clutter_get_motion_events_enabled"
+              version="0.6">
+      <doc xml:whitespace="preserve">Gets whether the per-actor motion events are enabled.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the motion events are enabled</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="get_option_group"
+              c:identifier="clutter_get_option_group"
+              version="0.2"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Returns a #GOptionGroup for the command line arguments recognized
+by Clutter. You should add this group to your #GOptionContext with
+g_option_context_add_group(), if you are using g_option_context_parse()
+to parse your commandline arguments.
+Calling g_option_context_parse() with Clutter's #GOptionGroup will result
+in Clutter's initialization. That is, the following code:
+|[
+g_option_context_set_main_group (context, clutter_get_option_group ());
+res = g_option_context_parse (context, &amp;amp;argc, &amp;amp;argc, NULL);
+]|
+is functionally equivalent to:
+|[
+clutter_init (&amp;amp;argc, &amp;amp;argv);
+]|
+After g_option_context_parse() on a #GOptionContext containing the
+Clutter #GOptionGroup has returned %TRUE, Clutter is guaranteed to be
+initialized.
+recognized by Clutter</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a #GOptionGroup for the commandline arguments</doc>
+        <type name="GLib.OptionGroup" c:type="GOptionGroup*"/>
+      </return-value>
+    </function>
+    <function name="get_option_group_without_init"
+              c:identifier="clutter_get_option_group_without_init"
+              version="0.8.2"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Returns a #GOptionGroup for the command line arguments recognized
+by Clutter. You should add this group to your #GOptionContext with
+g_option_context_add_group(), if you are using g_option_context_parse()
+to parse your commandline arguments.
+Unlike clutter_get_option_group(), calling g_option_context_parse() with
+the #GOptionGroup returned by this function requires a subsequent explicit
+call to clutter_init(); use this function when needing to set foreign
+display connection with clutter_x11_set_display(), or with
+&lt;function&gt;gtk_clutter_init()&lt;/function&gt;.
+recognized by Clutter</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a #GOptionGroup for the commandline arguments</doc>
+        <type name="GLib.OptionGroup" c:type="GOptionGroup*"/>
+      </return-value>
+    </function>
+    <function name="get_pointer_grab"
+              c:identifier="clutter_get_pointer_grab"
+              version="0.6">
+      <doc xml:whitespace="preserve">Queries the current pointer grab of clutter.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the actor currently holding the pointer grab, or NULL if there is no grab.</doc>
+        <type name="Actor" c:type="ClutterActor*"/>
+      </return-value>
+    </function>
+    <function name="get_script_id"
+              c:identifier="clutter_get_script_id"
+              version="0.6">
+      <doc xml:whitespace="preserve">Retrieves the Clutter script id, if any.
+a UI definition file. The returned string is owned by the object and
+should never be modified or freed.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the script id, or %NULL if @object was not defined inside</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="gobject" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GObject</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_show_fps"
+              c:identifier="clutter_get_show_fps"
+              version="0.4">
+      <doc xml:whitespace="preserve">Returns whether Clutter should print out the frames per second on the
+console. You can enable this setting either using the
+&lt;literal&gt;CLUTTER_SHOW_FPS&lt;/literal&gt; environment variable or passing
+the &lt;literal&gt;--clutter-show-fps&lt;/literal&gt; command line argument. *</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if Clutter should show the FPS.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="get_timestamp" c:identifier="clutter_get_timestamp">
+      <doc xml:whitespace="preserve">Returns the approximate number of microseconds passed since clutter was
+intialised.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">Number of microseconds since clutter_init() was called.</doc>
+        <type name="gulong" c:type="gulong"/>
+      </return-value>
+    </function>
+    <function name="grab_keyboard"
+              c:identifier="clutter_grab_keyboard"
+              version="0.6">
+      <doc xml:whitespace="preserve">Grabs keyboard events, after the grab is done keyboard
+events (#ClutterActor::key-press-event and #ClutterActor::key-release-event)
+are delivered to this actor directly. The source set in the event will be
+the actor that would have received the event if the keyboard grab was not
+in effect.
+Like pointer grabs, keyboard grabs should only be used as a last
+resource.
+See also clutter_stage_set_key_focus() and clutter_actor_grab_key_focus()
+to perform a "soft" key grab and assign key focus to a specific actor.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="actor" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterActor</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="grab_pointer"
+              c:identifier="clutter_grab_pointer"
+              version="0.6">
+      <doc xml:whitespace="preserve">Grabs pointer events, after the grab is done all pointer related events
+(press, motion, release, enter, leave and scroll) are delivered to this
+actor directly without passing through both capture and bubble phases of
+the event delivery chain. The source set in the event will be the actor
+that would have received the event if the pointer grab was not in effect.
+&lt;note&gt;&lt;para&gt;Grabs completely override the entire event delivery chain
+done by Clutter. Pointer grabs should only be used as a last resource;
+using the #ClutterActor::captured-event signal should always be the
+preferred way to intercept event delivery to reactive actors.&lt;/para&gt;&lt;/note&gt;
+If you wish to grab all the pointer events for a specific input device,
+you should use clutter_grab_pointer_for_device().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="actor" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterActor</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="grab_pointer_for_device"
+              c:identifier="clutter_grab_pointer_for_device"
+              version="0.8">
+      <doc xml:whitespace="preserve">Grabs all the pointer events coming from the device @id for @actor.
+If @id is -1 then this function is equivalent to clutter_grab_pointer().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="actor" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #ClutterActor</doc>
+          <type name="Actor" c:type="ClutterActor*"/>
+        </parameter>
+        <parameter name="id_" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a device id, or -1</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="grave" value="96">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="greater" value="62">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="greaterthanequal" value="2238">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="guillemotleft" value="171">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="guillemotright" value="187">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="h" value="104">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hairspace" value="2728">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hcircumflex" value="694">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="heart" value="2798">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_aleph" value="3296">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_ayin" value="3314">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_bet" value="3297">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_beth" value="3297">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_chet" value="3303">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_dalet" value="3299">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_daleth" value="3299">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_doublelowline" value="3295">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_finalkaph" value="3306">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_finalmem" value="3309">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_finalnun" value="3311">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_finalpe" value="3315">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_finalzade" value="3317">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_finalzadi" value="3317">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_gimel" value="3298">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_gimmel" value="3298">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_he" value="3300">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_het" value="3303">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_kaph" value="3307">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_kuf" value="3319">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_lamed" value="3308">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_mem" value="3310">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_nun" value="3312">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_pe" value="3316">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_qoph" value="3319">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_resh" value="3320">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_samech" value="3313">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_samekh" value="3313">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_shin" value="3321">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_taf" value="3322">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_taw" value="3322">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_tet" value="3304">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_teth" value="3304">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_waw" value="3301">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_yod" value="3305">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_zade" value="3318">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_zadi" value="3318">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_zain" value="3302">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hebrew_zayin" value="3302">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hexagram" value="2778">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="horizconnector" value="2211">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="horizlinescan1" value="2543">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="horizlinescan3" value="2544">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="horizlinescan5" value="2545">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="horizlinescan7" value="2546">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="horizlinescan9" value="2547">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hstroke" value="689">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ht" value="2530">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="hyphen" value="173">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="i" value="105">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="iTouch" value="269025120">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="iacute" value="237">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ibelowdot" value="16785099">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ibreve" value="16777517">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="icircumflex" value="238">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="identical" value="2255">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="idiaeresis" value="239">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="idotless" value="697">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ifonlyif" value="2253">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="igrave" value="236">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ihook" value="16785097">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="imacron" value="1007">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="implies" value="2254">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="includedin" value="2266">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="includes" value="2267">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="infinity" value="2242">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="init" c:identifier="clutter_init">
+      <doc xml:whitespace="preserve">Initialises everything needed to operate with Clutter and parses some
+standard command line options; @argc and @argv are adjusted accordingly
+so your own code will never see those standard arguments.
+It is safe to call this function multiple times.
+&lt;note&gt;This function will not abort in case of errors during
+initialization; clutter_init() will print out the error message on
+stderr, and will return an error code. It is up to the application
+code to handle this case. If you need to display the error message
+yourself, you can use clutter_init_with_args(), which takes a #GError
+pointer.&lt;/note&gt;</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a #ClutterInitError value</doc>
+        <type name="InitError" c:type="ClutterInitError"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">The number of arguments in @argv</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+        <parameter name="argv"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">A pointer to an array of arguments.</doc>
+          <array length="0" c:type="char***">
+            <type name="utf8" c:type="char**"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="init_error_quark" c:identifier="clutter_init_error_quark">
+      <return-value transfer-ownership="none">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="init_with_args"
+              c:identifier="clutter_init_with_args"
+              version="0.2"
+              throws="1">
+      <doc xml:whitespace="preserve">This function does the same work as clutter_init(). Additionally,
+it allows you to add your own command line options, and it
+automatically generates nicely formatted &lt;option&gt;--help&lt;/option&gt;
+output. Note that your program will be terminated after writing
+out the help output. Also note that, in case of error, the
+error message will be placed inside @error instead of being
+printed on the display.
+initialised, or other values or #ClutterInitError in case of
+error.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%CLUTTER_INIT_SUCCESS if Clutter has been successfully</doc>
+        <type name="InitError" c:type="ClutterInitError"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">a pointer to the number of command line arguments</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+        <parameter name="argv"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">a pointer to the array of command line arguments</doc>
+          <array length="0" c:type="char***">
+            <type name="utf8" c:type="char**"/>
+          </array>
+        </parameter>
+        <parameter name="parameter_string"
+                   transfer-ownership="none"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">a string which is displayed in the first line of &lt;option&gt;--help&lt;/option&gt; output, after &lt;literal&gt;&lt;replaceable&gt;programname&lt;/replaceable&gt; [OPTION...]&lt;/literal&gt;</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="entries" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a %NULL terminated array of #GOptionEntry&lt;!-- --&gt;s describing the options of your program</doc>
+          <type name="GLib.OptionEntry" c:type="GOptionEntry*"/>
+        </parameter>
+        <parameter name="translation_domain"
+                   transfer-ownership="none"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">a translation domain to use for translating the &lt;option&gt;--help&lt;/option&gt; output for the options in</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="integral" value="2239">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="intersection" value="2268">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="iogonek" value="999">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="itilde" value="949">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="j" value="106">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="jcircumflex" value="700">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="jot" value="3018">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="k" value="107">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_A" value="1201">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_CHI" value="1217">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_E" value="1204">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_FU" value="1228">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_HA" value="1226">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_HE" value="1229">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_HI" value="1227">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_HO" value="1230">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_HU" value="1228">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_I" value="1202">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_KA" value="1206">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_KE" value="1209">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_KI" value="1207">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_KO" value="1210">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_KU" value="1208">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_MA" value="1231">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_ME" value="1234">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_MI" value="1232">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_MO" value="1235">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_MU" value="1233">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_N" value="1245">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_NA" value="1221">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_NE" value="1224">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_NI" value="1222">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_NO" value="1225">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_NU" value="1223">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_O" value="1205">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_RA" value="1239">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_RE" value="1242">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_RI" value="1240">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_RO" value="1243">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_RU" value="1241">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_SA" value="1211">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_SE" value="1214">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_SHI" value="1212">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_SO" value="1215">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_SU" value="1213">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_TA" value="1216">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_TE" value="1219">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_TI" value="1217">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_TO" value="1220">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_TSU" value="1218">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_TU" value="1218">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_U" value="1203">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_WA" value="1244">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_WO" value="1190">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_YA" value="1236">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_YO" value="1238">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_YU" value="1237">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_a" value="1191">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_closingbracket" value="1187">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_comma" value="1188">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_conjunctive" value="1189">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_e" value="1194">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_fullstop" value="1185">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_i" value="1192">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_middledot" value="1189">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_o" value="1195">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_openingbracket" value="1186">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_switch" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_tsu" value="1199">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_tu" value="1199">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_u" value="1193">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_ya" value="1196">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_yo" value="1198">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kana_yu" value="1197">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kappa" value="930">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="kcedilla" value="1011">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="keysym_to_unicode"
+              c:identifier="clutter_keysym_to_unicode">
+      <doc xml:whitespace="preserve">Convert from a Clutter key symbol to the corresponding ISO10646 (Unicode)
+character.
+character.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a Unicode character, or 0 if there  is no corresponding</doc>
+        <type name="guint32" c:type="guint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="keyval" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a key symbol</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="kra" value="930">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="l" value="108">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="lacute" value="485">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="latincross" value="2777">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="lbelowdot" value="16784951">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="lcaron" value="437">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="lcedilla" value="950">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="leftanglebracket" value="2748">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="leftarrow" value="2299">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="leftcaret" value="2979">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="leftdoublequotemark" value="2770">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="leftmiddlecurlybrace" value="2223">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="leftopentriangle" value="2764">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="leftpointer" value="2794">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="leftradical" value="2209">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="leftshoe" value="3034">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="leftsinglequotemark" value="2768">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="leftt" value="2548">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="lefttack" value="3036">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="less" value="60">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="lessthanequal" value="2236">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="lf" value="2533">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="logicaland" value="2270">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="logicalor" value="2271">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="lowleftcorner" value="2541">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="lowrightcorner" value="2538">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="lstroke" value="435">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="m" value="109">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="mabovedot" value="16784961">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="macron" value="175">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="main" c:identifier="clutter_main">
+      <doc xml:whitespace="preserve">Starts the Clutter mainloop.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="main_level" c:identifier="clutter_main_level">
+      <doc xml:whitespace="preserve">Retrieves the depth of the Clutter mainloop.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The level of the mainloop.</doc>
+        <type name="gint" c:type="gint"/>
+      </return-value>
+    </function>
+    <function name="main_quit" c:identifier="clutter_main_quit">
+      <doc xml:whitespace="preserve">Terminates the Clutter mainloop.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <constant name="malesymbol" value="2807">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="maltesecross" value="2800">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="marker" value="2751">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="masculine" value="186">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="minus" value="45">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="minutes" value="2774">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="mu" value="181">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="multiply" value="215">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="musicalflat" value="2806">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="musicalsharp" value="2805">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="n" value="110">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="nabla" value="2245">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="nacute" value="497">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ncaron" value="498">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ncedilla" value="1009">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ninesubscript" value="16785545">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ninesuperior" value="16785529">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="nl" value="2536">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="nobreakspace" value="160">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="notapproxeq" value="16785991">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="notelementof" value="16785929">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="notequal" value="2237">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="notidentical" value="16786018">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="notsign" value="172">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ntilde" value="241">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="numbersign" value="35">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="numerosign" value="1712">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="o" value="111">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="oacute" value="243">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="obarred" value="16777845">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="obelowdot" value="16785101">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ocaron" value="16777682">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ocircumflex" value="244">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ocircumflexacute" value="16785105">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ocircumflexbelowdot" value="16785113">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ocircumflexgrave" value="16785107">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ocircumflexhook" value="16785109">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ocircumflextilde" value="16785111">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="odiaeresis" value="246">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="odoubleacute" value="501">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="oe" value="5053">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ogonek" value="434">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ograve" value="242">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ohook" value="16785103">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ohorn" value="16777633">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ohornacute" value="16785115">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ohornbelowdot" value="16785123">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ohorngrave" value="16785117">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ohornhook" value="16785119">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ohorntilde" value="16785121">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="omacron" value="1010">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="oneeighth" value="2755">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="onefifth" value="2738">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="onehalf" value="189">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="onequarter" value="188">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="onesixth" value="2742">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="onesubscript" value="16785537">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="onesuperior" value="185">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="onethird" value="2736">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ooblique" value="248">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="openrectbullet" value="2786">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="openstar" value="2789">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="opentribulletdown" value="2788">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="opentribulletup" value="2787">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ordfeminine" value="170">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="oslash" value="248">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="otilde" value="245">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="overbar" value="3008">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="overline" value="1150">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="p" value="112">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="pabovedot" value="16784983">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="paragraph" value="182">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="param_spec_color"
+              c:identifier="clutter_param_spec_color"
+              version="0.8.4"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a #GParamSpec for properties using #ClutterColor.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly created #GParamSpec</doc>
+        <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">name of the property</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:whitespace="preserve">short name</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <doc xml:whitespace="preserve">description (can be translatable)</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">default value</doc>
+          <type name="Color" c:type="ClutterColor*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">flags for the param spec</doc>
+          <type name="GObject.ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_fixed"
+              c:identifier="clutter_param_spec_fixed"
+              version="0.8"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a #GParamSpec for properties using #CoglFixed values</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly created #GParamSpec</doc>
+        <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">name of the property</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:whitespace="preserve">short name</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <doc xml:whitespace="preserve">description (can be translatable)</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="minimum" transfer-ownership="none">
+          <doc xml:whitespace="preserve">lower boundary</doc>
+          <type name="Cogl.Fixed" c:type="CoglFixed"/>
+        </parameter>
+        <parameter name="maximum" transfer-ownership="none">
+          <doc xml:whitespace="preserve">higher boundary</doc>
+          <type name="Cogl.Fixed" c:type="CoglFixed"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">default value</doc>
+          <type name="Cogl.Fixed" c:type="CoglFixed"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">flags for the param spec</doc>
+          <type name="GObject.ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_units"
+              c:identifier="clutter_param_spec_units"
+              version="1.0"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a #GParamSpec for properties using #ClutterUnits.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly created #GParamSpec</doc>
+        <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">name of the property</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:whitespace="preserve">short name</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <doc xml:whitespace="preserve">description (can be translatable)</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="default_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the default type for the #ClutterUnits</doc>
+          <type name="UnitType" c:type="ClutterUnitType"/>
+        </parameter>
+        <parameter name="minimum" transfer-ownership="none">
+          <doc xml:whitespace="preserve">lower boundary</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </parameter>
+        <parameter name="maximum" transfer-ownership="none">
+          <doc xml:whitespace="preserve">higher boundary</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">default value</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">flags for the param spec</doc>
+          <type name="GObject.ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="parenleft" value="40">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="parenright" value="41">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="partdifferential" value="16785922">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="partialderivative" value="2287">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="percent" value="37">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="period" value="46">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="periodcentered" value="183">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="phonographcopyright" value="2811">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="plus" value="43">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="plusminus" value="177">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="prescription" value="2772">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="prolongedsound" value="1200">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="punctspace" value="2726">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="q" value="113">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="quad" value="3020">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="question" value="63">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="questiondown" value="191">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="quotedbl" value="34">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="quoteleft" value="96">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="quoteright" value="39">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="r" value="114">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="racute" value="480">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="radical" value="2262">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="rcaron" value="504">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="rcedilla" value="947">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="redraw" c:identifier="clutter_redraw">
+      <doc xml:whitespace="preserve">Forces a redraw of the entire stage. Applications should never use this
+function, but queue a redraw using clutter_actor_queue_redraw().
+This function should only be used by libraries integrating Clutter from
+within another toolkit.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stage" transfer-ownership="none">
+          <type name="Stage" c:type="ClutterStage*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="registered" value="174">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="rightanglebracket" value="2750">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="rightarrow" value="2301">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="rightcaret" value="2982">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="rightdoublequotemark" value="2771">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="rightmiddlecurlybrace" value="2224">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="rightmiddlesummation" value="2231">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="rightopentriangle" value="2765">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="rightpointer" value="2795">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="rightshoe" value="3032">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="rightsinglequotemark" value="2769">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="rightt" value="2549">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="righttack" value="3068">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="s" value="115">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="sabovedot" value="16784993">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="sacute" value="438">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="scaron" value="441">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="scedilla" value="442">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="schwa" value="16777817">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="scircumflex" value="766">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="script_error_quark"
+              c:identifier="clutter_script_error_quark">
+      <return-value transfer-ownership="none">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <constant name="script_switch" value="65406">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="seconds" value="2775">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="section" value="167">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="semicolon" value="59">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="semivoicedsound" value="1247">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="set_default_frame_rate"
+              c:identifier="clutter_set_default_frame_rate"
+              version="0.6">
+      <doc xml:whitespace="preserve">Sets the default frame rate. This frame rate will be used to limit
+the number of frames drawn if Clutter is not able to synchronize
+with the vertical refresh rate of the display. When synchronization
+is possible, this value is ignored.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="frames_per_sec" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new default frame rate</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_font_flags"
+              c:identifier="clutter_set_font_flags"
+              version="1.0">
+      <doc xml:whitespace="preserve">Sets the font quality options for subsequent text rendering
+operations.
+Using mipmapped textures will improve the quality for scaled down
+text but will use more texture memory.
+Enabling hinting improves text quality for static text but may
+introduce some artifacts if the text is animated.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The new flags</doc>
+          <type name="FontFlags" c:type="ClutterFontFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_motion_events_enabled"
+              c:identifier="clutter_set_motion_events_enabled"
+              version="0.6">
+      <doc xml:whitespace="preserve">Sets whether per-actor motion events should be enabled or not (the
+default is to enable them).
+If @enable is %FALSE the following events will not work:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;ClutterActor::motion-event, unless on the
+#ClutterStage&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;ClutterActor::enter-event&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;ClutterActor::leave-event&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="enable" transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to enable per-actor motion events</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="seveneighths" value="2758">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="sevensubscript" value="16785543">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="sevensuperior" value="16785527">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="shader_error_quark"
+              c:identifier="clutter_shader_error_quark">
+      <return-value transfer-ownership="none">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="shader_float_get_type"
+              c:identifier="clutter_shader_float_get_type">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="shader_int_get_type"
+              c:identifier="clutter_shader_int_get_type">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="shader_matrix_get_type"
+              c:identifier="clutter_shader_matrix_get_type">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <constant name="signaturemark" value="2762">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="signifblank" value="2732">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="similarequal" value="2249">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="singlelowquotemark" value="2813">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="sixsubscript" value="16785542">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="sixsuperior" value="16785526">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="slash" value="47">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="soliddiamond" value="2528">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="space" value="32">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="squareroot" value="16785946">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ssharp" value="223">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="sterling" value="163">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="stricteq" value="16786019">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="t" value="116">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="tabovedot" value="16785003">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="tcaron" value="443">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="tcedilla" value="510">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="telephone" value="2809">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="telephonerecorder" value="2810">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="texture_error_quark"
+              c:identifier="clutter_texture_error_quark">
+      <return-value transfer-ownership="none">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <constant name="therefore" value="2240">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="thinspace" value="2727">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="thorn" value="254">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="threads_add_frame_source"
+              c:identifier="clutter_threads_add_frame_source"
+              shadowed-by="threads_add_frame_source_full"
+              version="0.8"
+              introspectable="0"
+              deprecated="1.6">
+      <doc xml:whitespace="preserve">Simple wrapper around clutter_threads_add_frame_source_full().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the ID (greater than 0) of the event source.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="fps" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of times per second to call the function</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" closure="2">
+          <doc xml:whitespace="preserve">function to call</doc>
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data to pass to the function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_add_frame_source_full"
+              c:identifier="clutter_threads_add_frame_source_full"
+              shadows="threads_add_frame_source"
+              version="0.8"
+              deprecated="1.6">
+      <doc xml:whitespace="preserve">Sets a function to be called at regular intervals holding the Clutter
+threads lock, with the given priority. The function is called repeatedly
+until it returns %FALSE, at which point the timeout is automatically
+removed and the function will not be called again. The @notify function
+is called when the timeout is removed.
+This function is similar to clutter_threads_add_timeout_full()
+except that it will try to compensate for delays. For example, if
+will be called again half the interval time after it finished. In
+contrast clutter_threads_add_timeout_full() would not fire until a
+full interval after the function completes so the delay between
+calls would be @interval * 1.5. This function does not however try
+to invoke the function multiple times to catch up missing frames if
+See also clutter_threads_add_idle_full().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the ID (greater than 0) of the event source.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="priority" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the priority of the frame source. Typically this will be in the range between %G_PRIORITY_DEFAULT and %G_PRIORITY_HIGH.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="fps" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of times per second to call the function</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="3"
+                   destroy="4">
+          <doc xml:whitespace="preserve">function to call</doc>
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data to pass to the function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify" transfer-ownership="none" scope="async">
+          <doc xml:whitespace="preserve">function to call when the timeout source is removed</doc>
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_add_idle"
+              c:identifier="clutter_threads_add_idle"
+              shadowed-by="threads_add_idle_full"
+              version="0.4"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Simple wrapper around clutter_threads_add_idle_full() using the
+default priority.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the ID (greater than 0) of the event source.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="func" transfer-ownership="none" closure="1">
+          <doc xml:whitespace="preserve">function to call</doc>
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data to pass to the function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_add_idle_full"
+              c:identifier="clutter_threads_add_idle_full"
+              shadows="threads_add_idle"
+              version="0.4">
+      <doc xml:whitespace="preserve">Adds a function to be called whenever there are no higher priority
+events pending. If the function returns %FALSE it is automatically
+removed from the list of event sources and will not be called again.
+This function can be considered a thread-safe variant of g_idle_add_full():
+it will call @function while holding the Clutter lock. It is logically
+equivalent to the following implementation:
+|[
+static gboolean
+idle_safe_callback (gpointer data)
+{
+SafeClosure *closure = data;
+gboolean res = FALSE;
+/&amp;ast; mark the critical section &amp;ast;/
+clutter_threads_enter();
+/&amp;ast; the callback does not need to acquire the Clutter
+&amp;ast; lock itself, as it is held by the this proxy handler
+&amp;ast;/
+res = closure-&gt;callback (closure-&gt;data);
+clutter_threads_leave();
+return res;
+}
+static gulong
+add_safe_idle (GSourceFunc callback,
+gpointer    data)
+{
+SafeClosure *closure = g_new0 (SafeClosure, 1);
+closure-&amp;gt;callback = callback;
+closure-&amp;gt;data = data;
+return g_add_idle_full (G_PRIORITY_DEFAULT_IDLE,
+idle_safe_callback,
+closure,
+g_free)
+}
+]|
+This function should be used by threaded applications to make sure
+that @func is emitted under the Clutter threads lock and invoked
+from the same thread that started the Clutter main loop. For instance,
+it can be used to update the UI using the results from a worker
+thread:
+|[
+static gboolean
+update_ui (gpointer data)
+{
+SomeClosure *closure = data;
+/&amp;ast; it is safe to call Clutter API from this function because
+&amp;ast; it is invoked from the same thread that started the main
+&amp;ast; loop and under the Clutter thread lock
+&amp;ast;/
+clutter_label_set_text (CLUTTER_LABEL (closure-&amp;gt;label),
+closure-&amp;gt;text);
+g_object_unref (closure-&amp;gt;label);
+g_free (closure);
+return FALSE;
+}
+/&amp;ast; within another thread &amp;ast;/
+closure = g_new0 (SomeClosure, 1);
+/&amp;ast; always take a reference on GObject instances &amp;ast;/
+closure-&amp;gt;label = g_object_ref (my_application-&amp;gt;label);
+closure-&amp;gt;text = g_strdup (processed_text_to_update_the_label);
+clutter_threads_add_idle_full (G_PRIORITY_HIGH_IDLE,
+update_ui,
+closure,
+NULL);
+]|</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the ID (greater than 0) of the event source.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="priority" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the priority of the timeout source. Typically this will be in the range between #G_PRIORITY_DEFAULT_IDLE and #G_PRIORITY_HIGH_IDLE</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <doc xml:whitespace="preserve">function to call</doc>
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data to pass to the function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify" transfer-ownership="none" scope="async">
+          <doc xml:whitespace="preserve">functio to call when the idle source is removed</doc>
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_add_repaint_func"
+              c:identifier="clutter_threads_add_repaint_func"
+              version="1.0">
+      <doc xml:whitespace="preserve">Adds a function to be called whenever Clutter is repainting a Stage.
+If the function returns %FALSE it is automatically removed from the
+list of repaint functions and will not be called again.
+This function is guaranteed to be called from within the same thread
+that called clutter_main(), and while the Clutter lock is being held.
+A repaint function is useful to ensure that an update of the scenegraph
+is performed before the scenegraph is repainted; for instance, uploading
+a frame from a video into a #ClutterTexture.
+When the repaint function is removed (either because it returned %FALSE
+or because clutter_threads_remove_repaint_func() has been called) the
+can use the returned integer to remove the repaint function by
+calling clutter_threads_remove_repaint_func().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the ID (greater than 0) of the repaint function. You</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="1"
+                   destroy="2">
+          <doc xml:whitespace="preserve">the function to be called within the paint cycle</doc>
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data to be passed to the function, or %NULL</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify" transfer-ownership="none" scope="async">
+          <doc xml:whitespace="preserve">function to be called when removing the repaint function, or %NULL</doc>
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_add_timeout"
+              c:identifier="clutter_threads_add_timeout"
+              shadowed-by="threads_add_timeout_full"
+              version="0.4"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Simple wrapper around clutter_threads_add_timeout_full().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the ID (greater than 0) of the event source.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="interval" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the time between calls to the function, in milliseconds</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" closure="2">
+          <doc xml:whitespace="preserve">function to call</doc>
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data to pass to the function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_add_timeout_full"
+              c:identifier="clutter_threads_add_timeout_full"
+              shadows="threads_add_timeout"
+              version="0.4">
+      <doc xml:whitespace="preserve">Sets a function to be called at regular intervals holding the Clutter
+threads lock, with the given priority. The function is called repeatedly
+until it returns %FALSE, at which point the timeout is automatically
+removed and the function will not be called again. The @notify function
+is called when the timeout is removed.
+The first call to the function will be at the end of the first @interval.
+It is important to note that, due to how the Clutter main loop is
+implemented, the timing will not be accurate and it will not try to
+"keep up" with the interval. A more reliable source is available
+using clutter_threads_add_frame_source_full(), which is also internally
+used by #ClutterTimeline.
+See also clutter_threads_add_idle_full().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the ID (greater than 0) of the event source.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="priority" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the priority of the timeout source. Typically this will be in the range between #G_PRIORITY_DEFAULT and #G_PRIORITY_HIGH.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="interval" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the time between calls to the function, in milliseconds</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="3"
+                   destroy="4">
+          <doc xml:whitespace="preserve">function to call</doc>
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data to pass to the function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify" transfer-ownership="none" scope="async">
+          <doc xml:whitespace="preserve">function to call when the timeout source is removed</doc>
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_enter"
+              c:identifier="clutter_threads_enter"
+              version="0.4">
+      <doc xml:whitespace="preserve">Locks the Clutter thread lock.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="threads_init"
+              c:identifier="clutter_threads_init"
+              version="0.4">
+      <doc xml:whitespace="preserve">Initialises the Clutter threading mechanism, so that Clutter API can be
+called by multiple threads, using clutter_threads_enter() and
+clutter_threads_leave() to mark the critical sections.
+You must call g_thread_init() before this function.
+This function must be called before clutter_init().
+It is safe to call this function multiple times.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="threads_leave"
+              c:identifier="clutter_threads_leave"
+              version="0.4">
+      <doc xml:whitespace="preserve">Unlocks the Clutter thread lock.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="threads_remove_repaint_func"
+              c:identifier="clutter_threads_remove_repaint_func"
+              version="1.0">
+      <doc xml:whitespace="preserve">Removes the repaint function with @handle_id as its id</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an unsigned integer greater than zero</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_set_lock_functions"
+              c:identifier="clutter_threads_set_lock_functions"
+              version="0.4"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Allows the application to replace the standard method that
+Clutter uses to protect its data structures. Normally, Clutter
+creates a single #GMutex that is locked by clutter_threads_enter(),
+and released by clutter_threads_leave(); using this function an
+application provides, instead, a function @enter_fn that is
+called by clutter_threads_enter() and a function @leave_fn that is
+called by clutter_threads_leave().
+The functions must provide at least same locking functionality
+as the default implementation, but can also do extra application
+specific processing.
+As an example, consider an application that has its own recursive
+lock that when held, holds the Clutter lock as well. When Clutter
+unlocks the Clutter lock when entering a recursive main loop, the
+application must temporarily release its lock as well.
+Most threaded Clutter apps won't need to use this method.
+This method must be called before clutter_threads_init(), and cannot
+be called multiple times.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="enter_fn" transfer-ownership="none">
+          <doc xml:whitespace="preserve">function called when aquiring the Clutter main lock</doc>
+          <type name="GObject.Callback" c:type="GCallback"/>
+        </parameter>
+        <parameter name="leave_fn" transfer-ownership="none">
+          <doc xml:whitespace="preserve">function called when releasing the Clutter main lock</doc>
+          <type name="GObject.Callback" c:type="GCallback"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="threeeighths" value="2756">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="threefifths" value="2740">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="threequarters" value="190">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="threesubscript" value="16785539">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="threesuperior" value="179">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="timeout_pool_new"
+              c:identifier="clutter_timeout_pool_new"
+              version="0.4"
+              introspectable="0"
+              deprecated="1.6">
+      <doc xml:whitespace="preserve">Creates a new timeout pool source. A timeout pool should be used when
+multiple timeout functions, running at the same priority, are needed and
+the g_timeout_add() API might lead to starvation of the time slice of
+the main loop. A timeout pool allocates a single time slice of the main
+loop and runs every timeout function inside it. The timeout pool is
+always sorted, so that the extraction of the next timeout function is
+a constant time operation.
+is owned by the GLib default context and will be automatically
+destroyed when the context is destroyed. It is possible to force
+the destruction of the timeout pool using g_source_destroy()</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly created #ClutterTimeoutPool. The created pool</doc>
+        <type name="TimeoutPool" c:type="ClutterTimeoutPool*"/>
+      </return-value>
+      <parameters>
+        <parameter name="priority" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the priority of the timeout pool. Typically this will be #G_PRIORITY_DEFAULT</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="tintegral" value="16785965">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="topintegral" value="2212">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="topleftparens" value="2219">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="topleftradical" value="2210">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="topleftsqbracket" value="2215">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="topleftsummation" value="2225">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="toprightparens" value="2221">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="toprightsqbracket" value="2217">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="toprightsummation" value="2229">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="topt" value="2551">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="topvertsummationconnector" value="2227">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="trademark" value="2761">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="trademarkincircle" value="2763">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="tslash" value="956">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="twofifths" value="2739">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="twosubscript" value="16785538">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="twosuperior" value="178">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="twothirds" value="2737">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="u" value="117">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="uacute" value="250">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ubelowdot" value="16785125">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ubreve" value="765">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ucircumflex" value="251">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="udiaeresis" value="252">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="udoubleacute" value="507">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ugrave" value="249">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="uhook" value="16785127">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="uhorn" value="16777648">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="uhornacute" value="16785129">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="uhornbelowdot" value="16785137">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="uhorngrave" value="16785131">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="uhornhook" value="16785133">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="uhorntilde" value="16785135">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="umacron" value="1022">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="underbar" value="3014">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="underscore" value="95">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="ungrab_keyboard"
+              c:identifier="clutter_ungrab_keyboard"
+              version="0.6">
+      <doc xml:whitespace="preserve">Removes an existing grab of the keyboard.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="ungrab_pointer"
+              c:identifier="clutter_ungrab_pointer"
+              version="0.6">
+      <doc xml:whitespace="preserve">Removes an existing grab of the pointer.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="ungrab_pointer_for_device"
+              c:identifier="clutter_ungrab_pointer_for_device"
+              version="0.8">
+      <doc xml:whitespace="preserve">Removes an existing grab of the pointer events for device @id_.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id_" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a device id</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="union" value="2269">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="uogonek" value="1017">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="uparrow" value="2300">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="upcaret" value="2985">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="upleftcorner" value="2540">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="uprightcorner" value="2539">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="upshoe" value="3011">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="upstile" value="3027">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="uptack" value="3022">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="uring" value="505">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="util_next_p2"
+              c:identifier="clutter_util_next_p2"
+              deprecated="1.2">
+      <doc xml:whitespace="preserve">Calculates the nearest power of two, greater than or equal to @a.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The nearest power of two, greater or equal to @a.</doc>
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Value to get the next power</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="utilde" value="1021">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="v" value="118">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <function name="value_get_color"
+              c:identifier="clutter_value_get_color"
+              version="0.8.4">
+      <doc xml:whitespace="preserve">Gets the #ClutterColor contained in @value.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the color inside the passed #GValue</doc>
+        <type name="Color" c:type="ClutterColor*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue initialized to #CLUTTER_TYPE_COLOR</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_fixed"
+              c:identifier="clutter_value_get_fixed"
+              version="0.8">
+      <doc xml:whitespace="preserve">Gets the fixed point value stored inside @value.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the value inside the passed #GValue</doc>
+        <type name="Cogl.Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue initialized to %COGL_TYPE_FIXED</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_shader_float"
+              c:identifier="clutter_value_get_shader_float"
+              version="0.8">
+      <doc xml:whitespace="preserve">Retrieves the list of floating point values stored inside
+the passed #GValue. @value must have been initialized with
+%CLUTTER_TYPE_SHADER_FLOAT.
+The returned value is owned by the #GValue and should never
+be modified or freed.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the pointer to a list of floating point values.</doc>
+        <type name="gfloat" c:type="gfloat*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <doc xml:whitespace="preserve">return location for the number of returned floating point values, or %NULL</doc>
+          <type name="gsize" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_shader_int"
+              c:identifier="clutter_value_get_shader_int"
+              version="0.8">
+      <doc xml:whitespace="preserve">Retrieves the list of integer values stored inside the passed
+#GValue. @value must have been initialized with
+%CLUTTER_TYPE_SHADER_INT.
+The returned value is owned by the #GValue and should never
+be modified or freed.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the pointer to a list of integer values.</doc>
+        <type name="gint" c:type="gint*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <doc xml:whitespace="preserve">return location for the number of returned integer values, or %NULL</doc>
+          <type name="gsize" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_shader_matrix"
+              c:identifier="clutter_value_get_shader_matrix"
+              version="0.8">
+      <doc xml:whitespace="preserve">Retrieves a matrix of floating point values stored inside
+the passed #GValue. @value must have been initialized with
+%CLUTTER_TYPE_SHADER_MATRIX.
+of floating point values. The returned value is owned by the #GValue and
+should never be modified or freed.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the pointer to a matrix</doc>
+        <array length="1" c:type="gfloat*">
+          <type name="gfloat" c:type="gfloat"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="length"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">return location for the number of returned floating point values, or %NULL</doc>
+          <type name="gsize" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_units"
+              c:identifier="clutter_value_get_units"
+              version="0.8">
+      <doc xml:whitespace="preserve">Gets the #ClutterUnits contained in @value.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the units inside the passed #GValue</doc>
+        <type name="Units" c:type="ClutterUnits*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue initialized to %CLUTTER_TYPE_UNITS</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_color"
+              c:identifier="clutter_value_set_color"
+              version="0.8.4">
+      <doc xml:whitespace="preserve">Sets @value to @color.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue initialized to #CLUTTER_TYPE_COLOR</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the color to set</doc>
+          <type name="Color" c:type="ClutterColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_fixed"
+              c:identifier="clutter_value_set_fixed"
+              version="0.8">
+      <doc xml:whitespace="preserve">Sets @value to @fixed_.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue initialized to %COGL_TYPE_FIXED</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="fixed_" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the fixed point value to set</doc>
+          <type name="Cogl.Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_shader_float"
+              c:identifier="clutter_value_set_shader_float"
+              version="0.8">
+      <doc xml:whitespace="preserve">Sets @floats as the contents of @value. The passed #GValue
+must have been initialized using %CLUTTER_TYPE_SHADER_FLOAT.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of floating point values in @floats</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="floats" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an array of floating point values</doc>
+          <type name="gfloat" c:type="gfloat*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_shader_int"
+              c:identifier="clutter_value_set_shader_int"
+              version="0.8">
+      <doc xml:whitespace="preserve">Sets @ints as the contents of @value. The passed #GValue
+must have been initialized using %CLUTTER_TYPE_SHADER_INT.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of integer values in @ints</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="ints" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an array of integer values</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_shader_matrix"
+              c:identifier="clutter_value_set_shader_matrix"
+              version="0.8">
+      <doc xml:whitespace="preserve">Sets @matrix as the contents of @value. The passed #GValue
+must have been initialized using %CLUTTER_TYPE_SHADER_MATRIX.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of floating point values in @floats</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="matrix" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a matrix of floating point values</doc>
+          <type name="gfloat" c:type="gfloat*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_units"
+              c:identifier="clutter_value_set_units"
+              version="0.8">
+      <doc xml:whitespace="preserve">Sets @value to @units</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue initialized to %CLUTTER_TYPE_UNITS</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="units" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the units to set</doc>
+          <type name="Units" c:type="ClutterUnits*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="variation" value="2241">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="vertbar" value="2552">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="vertconnector" value="2214">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="voicedsound" value="1246">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="vt" value="2537">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="w" value="119">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="wacute" value="16785027">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="wcircumflex" value="16777589">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="wdiaeresis" value="16785029">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="wgrave" value="16785025">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="x" value="120">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="xabovedot" value="16785035">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="y" value="121">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="yacute" value="253">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ybelowdot" value="16785141">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ycircumflex" value="16777591">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ydiaeresis" value="255">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="yen" value="165">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ygrave" value="16785139">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="yhook" value="16785143">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ytilde" value="16785145">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="z" value="122">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="zabovedot" value="447">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="zacute" value="444">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="zcaron" value="446">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="zerosubscript" value="16785536">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="zerosuperior" value="16785520">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="zstroke" value="16777654">
+      <type name="gint" c:type="gint"/>
+    </constant>
+  </namespace>
+</repository>
diff --git a/extra/clutter/cally/Cally-1.0.gir b/extra/clutter/cally/Cally-1.0.gir
new file mode 100644 (file)
index 0000000..695b819
--- /dev/null
@@ -0,0 +1,707 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.2"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="Atk" version="1.0"/>
+  <include name="Clutter" version="1.0"/>
+  <include name="Cogl" version="1.0"/>
+  <include name="GL" version="1.0"/>
+  <include name="GLib" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gio" version="2.0"/>
+  <include name="Json" version="1.0"/>
+  <include name="Pango" version="1.0"/>
+  <include name="PangoCairo" version="1.0"/>
+  <include name="PangoFT2" version="1.0"/>
+  <include name="cairo" version="1.0"/>
+  <include name="fontconfig" version="2.0"/>
+  <include name="freetype2" version="2.0"/>
+  <package name="cally-1.0"/>
+  <c:include name="cally/cally.h"/>
+  <namespace name="Cally"
+             version="1.0"
+             shared-library="libclutter-glx-1.0.so.0"
+             c:identifier-prefixes="Cally"
+             c:symbol-prefixes="cally">
+    <callback name="ActionCallback" c:type="CallyActionCallback" version="1.6">
+      <doc xml:whitespace="preserve">Action function, to be used on #AtkAction implementations as
+an individual action. Unlike #CallyActionFunc, this function
+uses the @user_data argument passed to cally_actor_add_action_full().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cally_actor" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CallyActor</doc>
+          <type name="Actor" c:type="CallyActor*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <doc xml:whitespace="preserve">user data passed to the function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ActionFunc" c:type="CallyActionFunc" version="1.4">
+      <doc xml:whitespace="preserve">Action function, to be used on #AtkAction implementations as a individual
+action</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cally_actor" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CallyActor</doc>
+          <type name="Actor" c:type="CallyActor*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="Actor"
+           c:symbol-prefix="actor"
+           c:type="CallyActor"
+           version="1.4"
+           parent="Atk.GObjectAccessible"
+           glib:type-name="CallyActor"
+           glib:get-type="cally_actor_get_type"
+           glib:type-struct="ActorClass">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;CallyActor&lt;/structname&gt; structure contains only private
+data and should be accessed using the provided API</doc>
+      <implements name="Atk.Action"/>
+      <implements name="Atk.Component"/>
+      <constructor name="new" c:identifier="cally_actor_new" version="1.4">
+        <doc xml:whitespace="preserve">Creates a new #CallyActor for the given @actor</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #AtkObject</doc>
+          <type name="Atk.Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Clutter.Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="add_action"
+              c:identifier="cally_actor_add_action"
+              shadowed-by="add_action_full"
+              version="1.4"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Adds a new action to be accessed with the #AtkAction interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">added action id, or -1 if failure</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the action name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="action_description" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the action description</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="action_keybinding" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the action keybinding</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="action_func" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the callback of the action, to be executed with do_action</doc>
+            <type name="ActionFunc" c:type="CallyActionFunc"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_action_full"
+              c:identifier="cally_actor_add_action_full"
+              shadows="add_action"
+              version="1.6">
+        <doc xml:whitespace="preserve">Adds a new action to be accessed with the #AtkAction interface.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">added action id, or -1 if failure</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the action name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="action_description" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the action description</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="action_keybinding" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the action keybinding</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="4"
+                     destroy="5">
+            <doc xml:whitespace="preserve">the callback of the action</doc>
+            <type name="ActionCallback" c:type="CallyActionCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to be passed to @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">function to be called when removing the action</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_action"
+              c:identifier="cally_actor_remove_action"
+              version="1.4">
+        <doc xml:whitespace="preserve">Removes a action, using the @action_id returned by cally_actor_add_action()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the operation was succesful, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the action id</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_action_by_name"
+              c:identifier="cally_actor_remove_action_by_name"
+              version="1.4">
+        <doc xml:whitespace="preserve">Removes an action, using the @action_name used when the action was added
+with cally_actor_add_action()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the operation was succesful, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the action to remove</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent" readable="0" private="1">
+        <type name="Atk.GObjectAccessible" c:type="AtkGObjectAccessible"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="ActorPrivate" c:type="CallyActorPrivate*"/>
+      </field>
+    </class>
+    <record name="ActorClass"
+            c:type="CallyActorClass"
+            glib:is-gtype-struct-for="Actor"
+            version="1.4">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;CallyActorClass&lt;/structname&gt; structure contains only
+private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="Atk.GObjectAccessibleClass"
+              c:type="AtkGObjectAccessibleClass"/>
+      </field>
+      <field name="notify_clutter">
+        <callback name="notify_clutter">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="GObject.Object" c:type="GObject*"/>
+            </parameter>
+            <parameter name="pspec" transfer-ownership="none">
+              <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="focus_clutter">
+        <callback name="focus_clutter">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Clutter.Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_actor">
+        <callback name="add_actor">
+          <return-value transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Clutter.Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Clutter.Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove_actor">
+        <callback name="remove_actor">
+          <return-value transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="container" transfer-ownership="none">
+              <type name="Clutter.Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="actor" transfer-ownership="none">
+              <type name="Clutter.Actor" c:type="ClutterActor*"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_padding_dummy" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="32">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <record name="ActorPrivate" c:type="CallyActorPrivate" disguised="1">
+    </record>
+    <class name="Clone"
+           c:symbol-prefix="clone"
+           c:type="CallyClone"
+           version="1.4"
+           parent="Actor"
+           glib:type-name="CallyClone"
+           glib:get-type="cally_clone_get_type"
+           glib:type-struct="CloneClass">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;CallyClone&lt;/structname&gt; structure contains only private
+data and should be accessed using the provided API</doc>
+      <implements name="Atk.Action"/>
+      <implements name="Atk.Component"/>
+      <constructor name="new" c:identifier="cally_clone_new" version="1.4">
+        <doc xml:whitespace="preserve">Creates a new #CallyClone for the given @actor. @actor must be a
+#ClutterClone.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #AtkObject</doc>
+          <type name="Atk.Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Clutter.Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <field name="parent" readable="0" private="1">
+        <type name="Actor" c:type="CallyActor"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="ClonePrivate" c:type="CallyClonePrivate*"/>
+      </field>
+    </class>
+    <record name="CloneClass"
+            c:type="CallyCloneClass"
+            glib:is-gtype-struct-for="Clone"
+            version="1.4">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;CallyCloneClass&lt;/structname&gt; structure contains only
+private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="ActorClass" c:type="CallyActorClass"/>
+      </field>
+      <field name="_padding_dummy" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="8">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <record name="ClonePrivate" c:type="CallyClonePrivate" disguised="1">
+    </record>
+    <class name="Group"
+           c:symbol-prefix="group"
+           c:type="CallyGroup"
+           version="1.4"
+           parent="Actor"
+           glib:type-name="CallyGroup"
+           glib:get-type="cally_group_get_type"
+           glib:type-struct="GroupClass">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;CallyGroup&lt;/structname&gt; structure contains only
+private data and should be accessed using the provided API</doc>
+      <implements name="Atk.Action"/>
+      <implements name="Atk.Component"/>
+      <constructor name="new" c:identifier="cally_group_new" version="1.4">
+        <doc xml:whitespace="preserve">Creates a #CallyGroup for @actor</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #CallyGroup</doc>
+          <type name="Atk.Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterGroup</doc>
+            <type name="Clutter.Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <field name="parent" readable="0" private="1">
+        <type name="Actor" c:type="CallyActor"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="GroupPrivate" c:type="CallyGroupPrivate*"/>
+      </field>
+    </class>
+    <record name="GroupClass"
+            c:type="CallyGroupClass"
+            glib:is-gtype-struct-for="Group"
+            version="1.4">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;CallyGroupClass&lt;/structname&gt; structure contains only
+private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="ActorClass" c:type="CallyActorClass"/>
+      </field>
+      <field name="_padding_dummy" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="8">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <record name="GroupPrivate" c:type="CallyGroupPrivate" disguised="1">
+    </record>
+    <class name="Rectangle"
+           c:symbol-prefix="rectangle"
+           c:type="CallyRectangle"
+           version="1.4"
+           parent="Actor"
+           glib:type-name="CallyRectangle"
+           glib:get-type="cally_rectangle_get_type"
+           glib:type-struct="RectangleClass">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;CallyRectangle&lt;/structname&gt; structure contains only private
+data and should be accessed using the provided API</doc>
+      <implements name="Atk.Action"/>
+      <implements name="Atk.Component"/>
+      <constructor name="new" c:identifier="cally_rectangle_new" version="1.4">
+        <doc xml:whitespace="preserve">Creates a new #CallyRectangle for the given @actor. @actor must be
+a #ClutterRectangle.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #AtkObject</doc>
+          <type name="Atk.Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Clutter.Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <field name="parent" readable="0" private="1">
+        <type name="Actor" c:type="CallyActor"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="RectanglePrivate" c:type="CallyRectanglePrivate*"/>
+      </field>
+    </class>
+    <record name="RectangleClass"
+            c:type="CallyRectangleClass"
+            glib:is-gtype-struct-for="Rectangle"
+            version="1.4">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;CallyRectangleClass&lt;/structname&gt; structure contains
+only private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="ActorClass" c:type="CallyActorClass"/>
+      </field>
+      <field name="_padding_dummy" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="8">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <record name="RectanglePrivate"
+            c:type="CallyRectanglePrivate"
+            disguised="1">
+    </record>
+    <class name="Root"
+           c:symbol-prefix="root"
+           c:type="CallyRoot"
+           version="1.4"
+           parent="Atk.GObjectAccessible"
+           glib:type-name="CallyRoot"
+           glib:get-type="cally_root_get_type"
+           glib:type-struct="RootClass">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;CallyRoot&lt;/structname&gt; structure contains only private
+data and should be accessed using the provided API</doc>
+      <constructor name="new" c:identifier="cally_root_new" version="1.4">
+        <doc xml:whitespace="preserve">Creates a new #CallyRoot object.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #AtkObject</doc>
+          <type name="Atk.Object" c:type="AtkObject*"/>
+        </return-value>
+      </constructor>
+      <field name="parent" readable="0" private="1">
+        <type name="Atk.GObjectAccessible" c:type="AtkGObjectAccessible"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="RootPrivate" c:type="CallyRootPrivate*"/>
+      </field>
+    </class>
+    <record name="RootClass"
+            c:type="CallyRootClass"
+            glib:is-gtype-struct-for="Root"
+            version="1.4">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;CallyRootClass&lt;/structname&gt; structure contains only
+private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="Atk.GObjectAccessibleClass"
+              c:type="AtkGObjectAccessibleClass"/>
+      </field>
+      <field name="_padding_dummy" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="16">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <record name="RootPrivate" c:type="CallyRootPrivate" disguised="1">
+    </record>
+    <class name="Stage"
+           c:symbol-prefix="stage"
+           c:type="CallyStage"
+           version="1.4"
+           parent="Group"
+           glib:type-name="CallyStage"
+           glib:get-type="cally_stage_get_type"
+           glib:type-struct="StageClass">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;CallyStage&lt;/structname&gt; structure contains only
+private data and should be accessed using the provided API</doc>
+      <implements name="Atk.Action"/>
+      <implements name="Atk.Component"/>
+      <constructor name="new" c:identifier="cally_stage_new" version="1.4">
+        <doc xml:whitespace="preserve">Creates a new #CallyStage for the given @actor. @actor should be a
+#ClutterStage.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #AtkObject</doc>
+          <type name="Atk.Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Clutter.Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <field name="parent" readable="0" private="1">
+        <type name="Group" c:type="CallyGroup"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="StagePrivate" c:type="CallyStagePrivate*"/>
+      </field>
+      <glib:signal name="activate" version="1.4">
+        <doc xml:whitespace="preserve">The ::activate signal is emitted when the stage receives the key
+focus from the underlying window system.
+event listener to "window:activate"</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="create" version="1.4">
+        <doc xml:whitespace="preserve">The ::create signal is emitted when the stage is created.
+event listener to "window:create"</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="deactivate" version="1.4">
+        <doc xml:whitespace="preserve">The ::deactivate signal is emitted when the stage loses key focus
+from the underlying window system.
+event listener to "window:deactivate"</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="destroy" version="1.4">
+        <doc xml:whitespace="preserve">The ::destroy signal is emitted when the stage is destroyed.
+event listener to "window:destroy"</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="StageClass"
+            c:type="CallyStageClass"
+            glib:is-gtype-struct-for="Stage"
+            version="1.4">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;CallyStageClass&lt;/structname&gt; structure contains only
+private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="GroupClass" c:type="CallyGroupClass"/>
+      </field>
+      <field name="_padding_dummy" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="16">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <record name="StagePrivate" c:type="CallyStagePrivate" disguised="1">
+    </record>
+    <class name="Text"
+           c:symbol-prefix="text"
+           c:type="CallyText"
+           version="1.4"
+           parent="Actor"
+           glib:type-name="CallyText"
+           glib:get-type="cally_text_get_type"
+           glib:type-struct="TextClass">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;CallyText&lt;/structname&gt; structure contains only private
+data and should be accessed using the provided API</doc>
+      <implements name="Atk.Action"/>
+      <implements name="Atk.Component"/>
+      <implements name="Atk.EditableText"/>
+      <implements name="Atk.Text"/>
+      <constructor name="new" c:identifier="cally_text_new" version="1.4">
+        <doc xml:whitespace="preserve">Creates a new #CallyText for the given @actor. @actor must be a
+#ClutterText.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #AtkObject</doc>
+          <type name="Atk.Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Clutter.Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <field name="parent" readable="0" private="1">
+        <type name="Actor" c:type="CallyActor"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="TextPrivate" c:type="CallyTextPrivate*"/>
+      </field>
+    </class>
+    <record name="TextClass"
+            c:type="CallyTextClass"
+            glib:is-gtype-struct-for="Text"
+            version="1.4">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;CallyTextClass&lt;/structname&gt; structure contains only
+private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="ActorClass" c:type="CallyActorClass"/>
+      </field>
+      <field name="_padding_dummy" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="8">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <record name="TextPrivate" c:type="CallyTextPrivate" disguised="1">
+    </record>
+    <class name="Texture"
+           c:symbol-prefix="texture"
+           c:type="CallyTexture"
+           version="1.4"
+           parent="Actor"
+           glib:type-name="CallyTexture"
+           glib:get-type="cally_texture_get_type"
+           glib:type-struct="TextureClass">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;CallyTexture&lt;/structname&gt; structure contains only
+private data and should be accessed using the provided API</doc>
+      <implements name="Atk.Action"/>
+      <implements name="Atk.Component"/>
+      <constructor name="new" c:identifier="cally_texture_new" version="1.4">
+        <doc xml:whitespace="preserve">Creates a new #CallyTexture for the given @actor. @actor must be
+a #ClutterTexture.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #AtkObject</doc>
+          <type name="Atk.Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="actor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #ClutterActor</doc>
+            <type name="Clutter.Actor" c:type="ClutterActor*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <field name="parent" readable="0" private="1">
+        <type name="Actor" c:type="CallyActor"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="TexturePrivate" c:type="CallyTexturePrivate*"/>
+      </field>
+    </class>
+    <record name="TextureClass"
+            c:type="CallyTextureClass"
+            glib:is-gtype-struct-for="Texture"
+            version="1.4">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;CallyTextureClass&lt;/structname&gt; structure contains
+only private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="ActorClass" c:type="CallyActorClass"/>
+      </field>
+      <field name="_padding_dummy" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="8">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <record name="TexturePrivate" c:type="CallyTexturePrivate" disguised="1">
+    </record>
+    <class name="Util"
+           c:symbol-prefix="util"
+           c:type="CallyUtil"
+           version="1.4"
+           parent="Atk.Util"
+           glib:type-name="CallyUtil"
+           glib:get-type="cally_util_get_type"
+           glib:type-struct="UtilClass">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;CallyUtil&lt;/structname&gt; structure contains only
+private data and should be accessed using the provided API</doc>
+      <field name="parent" readable="0" private="1">
+        <type name="Atk.Util" c:type="AtkUtil"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="UtilPrivate" c:type="CallyUtilPrivate*"/>
+      </field>
+    </class>
+    <record name="UtilClass"
+            c:type="CallyUtilClass"
+            glib:is-gtype-struct-for="Util"
+            version="1.4">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;CallyUtilClass&lt;/structname&gt; structure contains only
+private data</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="Atk.UtilClass" c:type="AtkUtilClass"/>
+      </field>
+      <field name="_padding_dummy" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="8">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <record name="UtilPrivate" c:type="CallyUtilPrivate" disguised="1">
+    </record>
+    <function name="accessibility_init"
+              c:identifier="cally_accessibility_init"
+              version="1.4">
+      <doc xml:whitespace="preserve">Initializes the accessibility support.
+initialized.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if accessibility support has been correctly</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="get_cally_initialized"
+              c:identifier="cally_get_cally_initialized"
+              version="1.4">
+      <doc xml:whitespace="preserve">Returns if the accessibility support using cally is enabled.
+initialized.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if accessibility support has been correctly</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/clutter/cogl/Cogl-1.0.gir b/extra/clutter/cogl/Cogl-1.0.gir
new file mode 100644 (file)
index 0000000..b10430a
--- /dev/null
@@ -0,0 +1,8901 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.2"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="GL" version="1.0"/>
+  <include name="GLib" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <package name="cogl-1.0"/>
+  <c:include name="cogl/cogl.h"/>
+  <namespace name="Cogl"
+             version="1.0"
+             shared-library="libclutter-glx-1.0.so.0"
+             c:identifier-prefixes="Cogl"
+             c:symbol-prefixes="cogl">
+    <alias name="Angle" c:type="CoglAngle">
+      <doc xml:whitespace="preserve">Integer representation of an angle such that 1024 corresponds to
+full circle (i.e., 2 * pi).</doc>
+      <type name="gint32" c:type="gint32"/>
+    </alias>
+    <alias name="Fixed" c:type="CoglFixed">
+      <doc xml:whitespace="preserve">Fixed point number using a (16.16) notation.</doc>
+      <type name="gint32" c:type="gint32"/>
+    </alias>
+    <alias name="Handle" c:type="CoglHandle">
+      <doc xml:whitespace="preserve">Type used for storing references to cogl objects, the CoglHandle is
+a fully opaque type without any public data members.</doc>
+      <type name="gpointer" c:type="gpointer"/>
+    </alias>
+    <constant name="AFIRST_BIT" value="64">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="A_BIT" value="16">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="Attribute" c:type="CoglAttribute" disguised="1">
+    </record>
+    <enumeration name="AttributeType"
+                 version="1.0"
+                 glib:type-name="CoglAttributeType"
+                 glib:get-type="cogl_attribute_type_get_type"
+                 c:type="CoglAttributeType">
+      <doc xml:whitespace="preserve">Data types for the components of a vertex attribute.</doc>
+      <member name="byte"
+              value="5120"
+              c:identifier="COGL_ATTRIBUTE_TYPE_BYTE"
+              glib:nick="byte"/>
+      <member name="unsigned_byte"
+              value="5121"
+              c:identifier="COGL_ATTRIBUTE_TYPE_UNSIGNED_BYTE"
+              glib:nick="unsigned-byte"/>
+      <member name="short"
+              value="5122"
+              c:identifier="COGL_ATTRIBUTE_TYPE_SHORT"
+              glib:nick="short"/>
+      <member name="unsigned_short"
+              value="5123"
+              c:identifier="COGL_ATTRIBUTE_TYPE_UNSIGNED_SHORT"
+              glib:nick="unsigned-short"/>
+      <member name="float"
+              value="5126"
+              c:identifier="COGL_ATTRIBUTE_TYPE_FLOAT"
+              glib:nick="float"/>
+    </enumeration>
+    <constant name="BGR_BIT" value="32">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="Bitmap" c:type="CoglBitmap" disguised="1">
+    </record>
+    <enumeration name="BitmapError"
+                 version="1.4"
+                 glib:type-name="CoglBitmapError"
+                 glib:get-type="cogl_bitmap_error_get_type"
+                 c:type="CoglBitmapError"
+                 glib:error-quark="cogl_bitmap_error_quark">
+      <doc xml:whitespace="preserve">Error codes that can be thrown when performing bitmap
+operations. Note that gdk_pixbuf_new_from_file() can also throw
+errors directly from the underlying image loading library. For
+example, if GdkPixbuf is used then errors #GdkPixbufError&lt;!-- --&gt;s
+will be used directly.</doc>
+      <member name="failed"
+              value="0"
+              c:identifier="COGL_BITMAP_ERROR_FAILED"
+              glib:nick="failed"/>
+      <member name="unknown_type"
+              value="1"
+              c:identifier="COGL_BITMAP_ERROR_UNKNOWN_TYPE"
+              glib:nick="unknown-type"/>
+      <member name="corrupt_image"
+              value="2"
+              c:identifier="COGL_BITMAP_ERROR_CORRUPT_IMAGE"
+              glib:nick="corrupt-image"/>
+    </enumeration>
+    <enumeration name="BlendStringError"
+                 version="1.0"
+                 glib:type-name="CoglBlendStringError"
+                 glib:get-type="cogl_blend_string_error_get_type"
+                 c:type="CoglBlendStringError"
+                 glib:error-quark="cogl_blend_string_error_quark">
+      <doc xml:whitespace="preserve">Error enumeration for the blend strings parser</doc>
+      <member name="parse_error"
+              value="0"
+              c:identifier="COGL_BLEND_STRING_ERROR_PARSE_ERROR"
+              glib:nick="parse-error"/>
+      <member name="argument_parse_error"
+              value="1"
+              c:identifier="COGL_BLEND_STRING_ERROR_ARGUMENT_PARSE_ERROR"
+              glib:nick="argument-parse-error"/>
+      <member name="invalid_error"
+              value="2"
+              c:identifier="COGL_BLEND_STRING_ERROR_INVALID_ERROR"
+              glib:nick="invalid-error"/>
+      <member name="gpu_unsupported_error"
+              value="3"
+              c:identifier="COGL_BLEND_STRING_ERROR_GPU_UNSUPPORTED_ERROR"
+              glib:nick="gpu-unsupported-error"/>
+    </enumeration>
+    <record name="Buffer" c:type="CoglBuffer" disguised="1">
+      <method name="get_size_EXP" c:identifier="cogl_buffer_get_size_EXP">
+        <return-value transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </return-value>
+      </method>
+      <method name="get_update_hint_EXP"
+              c:identifier="cogl_buffer_get_update_hint_EXP">
+        <return-value transfer-ownership="none">
+          <type name="BufferUpdateHint" c:type="CoglBufferUpdateHint"/>
+        </return-value>
+      </method>
+      <method name="map_EXP"
+              c:identifier="cogl_buffer_map_EXP"
+              introspectable="0">
+        <return-value>
+          <type name="gpointer" c:type="void*"/>
+        </return-value>
+        <parameters>
+          <parameter name="access" transfer-ownership="none">
+            <type name="BufferAccess" c:type="CoglBufferAccess"/>
+          </parameter>
+          <parameter name="hints" transfer-ownership="none">
+            <type name="BufferMapHint" c:type="CoglBufferMapHint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_data_EXP" c:identifier="cogl_buffer_set_data_EXP">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="gsize" c:type="gsize"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="gpointer" c:type="void*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="gsize" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_update_hint_EXP"
+              c:identifier="cogl_buffer_set_update_hint_EXP">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="hint" transfer-ownership="none">
+            <type name="BufferUpdateHint" c:type="CoglBufferUpdateHint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unmap_EXP" c:identifier="cogl_buffer_unmap_EXP">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <bitfield name="BufferAccess"
+              version="1.2"
+              glib:type-name="CoglBufferAccess"
+              glib:get-type="cogl_buffer_access_get_type"
+              c:type="CoglBufferAccess">
+      <doc xml:whitespace="preserve">The access hints for cogl_buffer_set_update_hint()</doc>
+      <member name="read"
+              value="1"
+              c:identifier="COGL_BUFFER_ACCESS_READ"
+              glib:nick="read"/>
+      <member name="write"
+              value="2"
+              c:identifier="COGL_BUFFER_ACCESS_WRITE"
+              glib:nick="write"/>
+      <member name="read_write"
+              value="3"
+              c:identifier="COGL_BUFFER_ACCESS_READ_WRITE"
+              glib:nick="read-write"/>
+    </bitfield>
+    <bitfield name="BufferBit"
+              version="1.0"
+              glib:type-name="CoglBufferBit"
+              glib:get-type="cogl_buffer_bit_get_type"
+              c:type="CoglBufferBit">
+      <doc xml:whitespace="preserve">Types of auxiliary buffers</doc>
+      <member name="color"
+              value="1"
+              c:identifier="COGL_BUFFER_BIT_COLOR"
+              glib:nick="color"/>
+      <member name="depth"
+              value="2"
+              c:identifier="COGL_BUFFER_BIT_DEPTH"
+              glib:nick="depth"/>
+      <member name="stencil"
+              value="4"
+              c:identifier="COGL_BUFFER_BIT_STENCIL"
+              glib:nick="stencil"/>
+    </bitfield>
+    <bitfield name="BufferMapHint"
+              version="1.4"
+              glib:type-name="CoglBufferMapHint"
+              glib:get-type="cogl_buffer_map_hint_get_type"
+              c:type="CoglBufferMapHint">
+      <doc xml:whitespace="preserve">Hints to Cogl about how you are planning to modify the data once it
+is mapped.</doc>
+      <member name="discard"
+              value="1"
+              c:identifier="COGL_BUFFER_MAP_HINT_DISCARD"
+              glib:nick="discard"/>
+    </bitfield>
+    <bitfield name="BufferTarget"
+              version="0.8"
+              glib:type-name="CoglBufferTarget"
+              glib:get-type="cogl_buffer_target_get_type"
+              c:type="CoglBufferTarget">
+      <doc xml:whitespace="preserve">Target flags for FBOs.</doc>
+      <member name="window_buffer"
+              value="2"
+              c:identifier="COGL_WINDOW_BUFFER"
+              glib:nick="window-buffer"/>
+      <member name="offscreen_buffer"
+              value="4"
+              c:identifier="COGL_OFFSCREEN_BUFFER"
+              glib:nick="offscreen-buffer"/>
+    </bitfield>
+    <enumeration name="BufferUpdateHint"
+                 version="1.2"
+                 glib:type-name="CoglBufferUpdateHint"
+                 glib:get-type="cogl_buffer_update_hint_get_type"
+                 c:type="CoglBufferUpdateHint">
+      <doc xml:whitespace="preserve">The update hint on a buffer allows the user to give some detail on how often
+the buffer data is going to be updated.</doc>
+      <member name="static"
+              value="0"
+              c:identifier="COGL_BUFFER_UPDATE_HINT_STATIC"
+              glib:nick="static"/>
+      <member name="dynamic"
+              value="1"
+              c:identifier="COGL_BUFFER_UPDATE_HINT_DYNAMIC"
+              glib:nick="dynamic"/>
+      <member name="stream"
+              value="2"
+              c:identifier="COGL_BUFFER_UPDATE_HINT_STREAM"
+              glib:nick="stream"/>
+    </enumeration>
+    <record name="Color" c:type="CoglColor" version="1.0">
+      <doc xml:whitespace="preserve">A structure for holding a color definition. The contents of
+the CoglColor structure are private and should never by accessed
+directly.</doc>
+      <field name="red" readable="0" private="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+      <field name="green" readable="0" private="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+      <field name="blue" readable="0" private="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+      <field name="alpha" readable="0" private="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+      <field name="padding0" readable="0" private="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="padding1" readable="0" private="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="padding2" readable="0" private="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <method name="copy"
+              c:identifier="cogl_color_copy"
+              version="1.0"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Creates a copy of @color
+to free the allocate resources</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a newly-allocated #CoglColor. Use cogl_color_free()</doc>
+          <type name="Color" c:type="CoglColor*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="cogl_color_free" version="1.0">
+        <doc xml:whitespace="preserve">Frees the resources allocated by cogl_color_new() and cogl_color_copy()</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_alpha"
+              c:identifier="cogl_color_get_alpha"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the alpha channel of @color as a fixed point
+value between 0 and %1.0.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the alpha channel of the passed color</doc>
+          <type name="gfloat" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="get_alpha_byte"
+              c:identifier="cogl_color_get_alpha_byte"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the alpha channel of @color as a byte value
+between 0 and 255</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the alpha channel of the passed color</doc>
+          <type name="guint8" c:type="unsigned char"/>
+        </return-value>
+      </method>
+      <method name="get_alpha_float"
+              c:identifier="cogl_color_get_alpha_float"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the alpha channel of @color as a floating point
+value between 0.0 and 1.0</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the alpha channel of the passed color</doc>
+          <type name="gfloat" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="get_blue" c:identifier="cogl_color_get_blue" version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the blue channel of @color as a fixed point
+value between 0 and %1.0.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the blue channel of the passed color</doc>
+          <type name="gfloat" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="get_blue_byte"
+              c:identifier="cogl_color_get_blue_byte"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the blue channel of @color as a byte value
+between 0 and 255</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the blue channel of the passed color</doc>
+          <type name="guint8" c:type="unsigned char"/>
+        </return-value>
+      </method>
+      <method name="get_blue_float"
+              c:identifier="cogl_color_get_blue_float"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the blue channel of @color as a floating point
+value between 0.0 and 1.0</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the blue channel of the passed color</doc>
+          <type name="gfloat" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="get_green"
+              c:identifier="cogl_color_get_green"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the green channel of @color as a fixed point
+value between 0 and %1.0.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the green channel of the passed color</doc>
+          <type name="gfloat" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="get_green_byte"
+              c:identifier="cogl_color_get_green_byte"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the green channel of @color as a byte value
+between 0 and 255</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the green channel of the passed color</doc>
+          <type name="guint8" c:type="unsigned char"/>
+        </return-value>
+      </method>
+      <method name="get_green_float"
+              c:identifier="cogl_color_get_green_float"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the green channel of @color as a floating point
+value between 0.0 and 1.0</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the green channel of the passed color</doc>
+          <type name="gfloat" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="get_red" c:identifier="cogl_color_get_red" version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the red channel of @color as a fixed point
+value between 0 and %1.0.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the red channel of the passed color</doc>
+          <type name="gfloat" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="get_red_byte"
+              c:identifier="cogl_color_get_red_byte"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the red channel of @color as a byte value
+between 0 and 255</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the red channel of the passed color</doc>
+          <type name="guint8" c:type="unsigned char"/>
+        </return-value>
+      </method>
+      <method name="get_red_float"
+              c:identifier="cogl_color_get_red_float"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the red channel of @color as a floating point
+value between 0.0 and 1.0</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the red channel of the passed color</doc>
+          <type name="gfloat" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="init_from_4f"
+              c:identifier="cogl_color_init_from_4f"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the values of the passed channels into a #CoglColor</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="red" transfer-ownership="none">
+            <doc xml:whitespace="preserve">value of the red channel, between 0 and %1.0</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="green" transfer-ownership="none">
+            <doc xml:whitespace="preserve">value of the green channel, between 0 and %1.0</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="blue" transfer-ownership="none">
+            <doc xml:whitespace="preserve">value of the blue channel, between 0 and %1.0</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">value of the alpha channel, between 0 and %1.0</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="init_from_4fv"
+              c:identifier="cogl_color_init_from_4fv"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the values of the passed channels into a #CoglColor</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color_array" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to an array of 4 float color components</doc>
+            <type name="gfloat" c:type="float*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="init_from_4ub"
+              c:identifier="cogl_color_init_from_4ub"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the values of the passed channels into a #CoglColor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="red" transfer-ownership="none">
+            <doc xml:whitespace="preserve">value of the red channel, between 0 and 255</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="green" transfer-ownership="none">
+            <doc xml:whitespace="preserve">value of the green channel, between 0 and 255</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="blue" transfer-ownership="none">
+            <doc xml:whitespace="preserve">value of the blue channel, between 0 and 255</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">value of the alpha channel, between 0 and 255</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="premultiply"
+              c:identifier="cogl_color_premultiply"
+              version="1.0">
+        <doc xml:whitespace="preserve">Converts a non-premultiplied color to a pre-multiplied color. For
+example, semi-transparent red is (1.0, 0, 0, 0.5) when non-premultiplied
+and (0.5, 0, 0, 0.5) when premultiplied.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_alpha"
+              c:identifier="cogl_color_set_alpha"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the alpha channel of @color to @alpha.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a float value between 0.0f and 1.0f</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_alpha_byte"
+              c:identifier="cogl_color_set_alpha_byte"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the alpha channel of @color to @alpha.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a byte value between 0 and 255</doc>
+            <type name="guint8" c:type="unsigned char"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_alpha_float"
+              c:identifier="cogl_color_set_alpha_float"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the alpha channel of @color to @alpha.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a float value between 0.0f and 1.0f</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_blue" c:identifier="cogl_color_set_blue" version="1.4">
+        <doc xml:whitespace="preserve">Sets the blue channel of @color to @blue.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="blue" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a float value between 0.0f and 1.0f</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_blue_byte"
+              c:identifier="cogl_color_set_blue_byte"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the blue channel of @color to @blue.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="blue" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a byte value between 0 and 255</doc>
+            <type name="guint8" c:type="unsigned char"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_blue_float"
+              c:identifier="cogl_color_set_blue_float"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the blue channel of @color to @blue.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="blue" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a float value between 0.0f and 1.0f</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_4f"
+              c:identifier="cogl_color_set_from_4f"
+              version="1.0"
+              deprecated="Use cogl_color_init_from_4f instead."
+              deprecated-version="1.4">
+        <doc xml:whitespace="preserve">Sets the values of the passed channels into a #CoglColor</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="red" transfer-ownership="none">
+            <doc xml:whitespace="preserve">value of the red channel, between 0 and %1.0</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="green" transfer-ownership="none">
+            <doc xml:whitespace="preserve">value of the green channel, between 0 and %1.0</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="blue" transfer-ownership="none">
+            <doc xml:whitespace="preserve">value of the blue channel, between 0 and %1.0</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">value of the alpha channel, between 0 and %1.0</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_4ub"
+              c:identifier="cogl_color_set_from_4ub"
+              version="1.0"
+              deprecated="Use cogl_color_init_from_4ub instead."
+              deprecated-version="1.4">
+        <doc xml:whitespace="preserve">Sets the values of the passed channels into a #CoglColor.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="red" transfer-ownership="none">
+            <doc xml:whitespace="preserve">value of the red channel, between 0 and 255</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="green" transfer-ownership="none">
+            <doc xml:whitespace="preserve">value of the green channel, between 0 and 255</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="blue" transfer-ownership="none">
+            <doc xml:whitespace="preserve">value of the blue channel, between 0 and 255</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">value of the alpha channel, between 0 and 255</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_green"
+              c:identifier="cogl_color_set_green"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the green channel of @color to @green.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="green" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a float value between 0.0f and 1.0f</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_green_byte"
+              c:identifier="cogl_color_set_green_byte"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the green channel of @color to @green.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="green" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a byte value between 0 and 255</doc>
+            <type name="guint8" c:type="unsigned char"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_green_float"
+              c:identifier="cogl_color_set_green_float"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the green channel of @color to @green.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="green" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a float value between 0.0f and 1.0f</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_red" c:identifier="cogl_color_set_red" version="1.4">
+        <doc xml:whitespace="preserve">Sets the red channel of @color to @red.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="red" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a float value between 0.0f and 1.0f</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_red_byte"
+              c:identifier="cogl_color_set_red_byte"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the red channel of @color to @red.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="red" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a byte value between 0 and 255</doc>
+            <type name="guint8" c:type="unsigned char"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_red_float"
+              c:identifier="cogl_color_set_red_float"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the red channel of @color to @red.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="red" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a float value between 0.0f and 1.0f</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unpremultiply"
+              c:identifier="cogl_color_unpremultiply"
+              version="1.4">
+        <doc xml:whitespace="preserve">Converts a pre-multiplied color to a non-premultiplied color. For
+example, semi-transparent red is (0.5, 0, 0, 0.5) when premultiplied
+and (1.0, 0, 0, 0.5) when non-premultiplied.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="DepthTestFunction"
+                 glib:type-name="CoglDepthTestFunction"
+                 glib:get-type="cogl_depth_test_function_get_type"
+                 c:type="CoglDepthTestFunction">
+      <doc xml:whitespace="preserve">When using depth testing one of these functions is used to compare
+the depth of an incoming fragment against the depth value currently
+stored in the depth buffer. The function is changed using
+cogl_material_set_depth_test_function().
+The test is only done when depth testing is explicitly enabled. (See
+cogl_material_set_depth_test_enabled())</doc>
+      <member name="never"
+              value="512"
+              c:identifier="COGL_DEPTH_TEST_FUNCTION_NEVER"
+              glib:nick="never"/>
+      <member name="less"
+              value="513"
+              c:identifier="COGL_DEPTH_TEST_FUNCTION_LESS"
+              glib:nick="less"/>
+      <member name="equal"
+              value="514"
+              c:identifier="COGL_DEPTH_TEST_FUNCTION_EQUAL"
+              glib:nick="equal"/>
+      <member name="lequal"
+              value="515"
+              c:identifier="COGL_DEPTH_TEST_FUNCTION_LEQUAL"
+              glib:nick="lequal"/>
+      <member name="greater"
+              value="516"
+              c:identifier="COGL_DEPTH_TEST_FUNCTION_GREATER"
+              glib:nick="greater"/>
+      <member name="notequal"
+              value="517"
+              c:identifier="COGL_DEPTH_TEST_FUNCTION_NOTEQUAL"
+              glib:nick="notequal"/>
+      <member name="gequal"
+              value="518"
+              c:identifier="COGL_DEPTH_TEST_FUNCTION_GEQUAL"
+              glib:nick="gequal"/>
+      <member name="always"
+              value="519"
+              c:identifier="COGL_DEPTH_TEST_FUNCTION_ALWAYS"
+              glib:nick="always"/>
+    </enumeration>
+    <enumeration name="DriverError"
+                 glib:type-name="CoglDriverError"
+                 glib:get-type="cogl_driver_error_get_type"
+                 c:type="CoglDriverError">
+      <member name="unknown_version"
+              value="0"
+              c:identifier="COGL_DRIVER_ERROR_UNKNOWN_VERSION"
+              glib:nick="unknown-version"/>
+      <member name="invalid_version"
+              value="1"
+              c:identifier="COGL_DRIVER_ERROR_INVALID_VERSION"
+              glib:nick="invalid-version"/>
+    </enumeration>
+    <enumeration name="Error"
+                 version="1.4"
+                 glib:type-name="CoglError"
+                 glib:get-type="cogl_error_get_type"
+                 c:type="CoglError">
+      <doc xml:whitespace="preserve">Error enumeration for Cogl
+The @COGL_ERROR_UNSUPPORTED error can be thrown for a variety of
+reasons. For example:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;You've tried to use a feature that is not
+advertised by cogl_get_features(). This could happen if you create
+a non-sliced texture with a non-power-of-two size when
+%COGL_FEATURE_TEXTURE_NPOT is not advertised.&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;The GPU can not handle the configuration you have
+requested. An example might be if you try to use too many texture
+layers in a single #CoglPipeline&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;The driver does not support some
+configuration.&lt;/para&gt;&lt;/listiem&gt;
+&lt;/itemizedlist&gt;
+Currently this is only used by Cogl API marked as experimental so
+this enum should also be considered experimental.</doc>
+      <member name="unsupported"
+              value="0"
+              c:identifier="COGL_ERROR_UNSUPPORTED"
+              glib:nick="unsupported"/>
+    </enumeration>
+    <constant name="FIXED_0_5" value="32768">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="FIXED_1" value="1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="FIXED_2_PI" value="411775">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="FIXED_BITS" value="32">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="FIXED_EPSILON" value="1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="FIXED_MAX" value="2147483647">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="FIXED_MIN" value="2147483648">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="FIXED_PI" value="205887">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="FIXED_PI_2" value="102944">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="FIXED_PI_4" value="51472">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="FIXED_Q" value="-16">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <bitfield name="FeatureFlags"
+              version="0.8"
+              glib:type-name="CoglFeatureFlags"
+              glib:get-type="cogl_feature_flags_get_type"
+              c:type="CoglFeatureFlags">
+      <doc xml:whitespace="preserve">Flags for the supported features.</doc>
+      <member name="texture_rectangle"
+              value="2"
+              c:identifier="COGL_FEATURE_TEXTURE_RECTANGLE"
+              glib:nick="texture-rectangle"/>
+      <member name="texture_npot"
+              value="4"
+              c:identifier="COGL_FEATURE_TEXTURE_NPOT"
+              glib:nick="texture-npot"/>
+      <member name="texture_yuv"
+              value="8"
+              c:identifier="COGL_FEATURE_TEXTURE_YUV"
+              glib:nick="texture-yuv"/>
+      <member name="texture_read_pixels"
+              value="16"
+              c:identifier="COGL_FEATURE_TEXTURE_READ_PIXELS"
+              glib:nick="texture-read-pixels"/>
+      <member name="shaders_glsl"
+              value="32"
+              c:identifier="COGL_FEATURE_SHADERS_GLSL"
+              glib:nick="shaders-glsl"/>
+      <member name="offscreen"
+              value="64"
+              c:identifier="COGL_FEATURE_OFFSCREEN"
+              glib:nick="offscreen"/>
+      <member name="offscreen_multisample"
+              value="128"
+              c:identifier="COGL_FEATURE_OFFSCREEN_MULTISAMPLE"
+              glib:nick="offscreen-multisample"/>
+      <member name="offscreen_blit"
+              value="256"
+              c:identifier="COGL_FEATURE_OFFSCREEN_BLIT"
+              glib:nick="offscreen-blit"/>
+      <member name="four_clip_planes"
+              value="512"
+              c:identifier="COGL_FEATURE_FOUR_CLIP_PLANES"
+              glib:nick="four-clip-planes"/>
+      <member name="stencil_buffer"
+              value="1024"
+              c:identifier="COGL_FEATURE_STENCIL_BUFFER"
+              glib:nick="stencil-buffer"/>
+      <member name="vbos"
+              value="2048"
+              c:identifier="COGL_FEATURE_VBOS"
+              glib:nick="vbos"/>
+      <member name="pbos"
+              value="4096"
+              c:identifier="COGL_FEATURE_PBOS"
+              glib:nick="pbos"/>
+      <member name="unsigned_int_indices"
+              value="8192"
+              c:identifier="COGL_FEATURE_UNSIGNED_INT_INDICES"
+              glib:nick="unsigned-int-indices"/>
+      <member name="depth_range"
+              value="16384"
+              c:identifier="COGL_FEATURE_DEPTH_RANGE"
+              glib:nick="depth-range"/>
+      <member name="texture_npot_basic"
+              value="32768"
+              c:identifier="COGL_FEATURE_TEXTURE_NPOT_BASIC"
+              glib:nick="texture-npot-basic"/>
+      <member name="texture_npot_mipmap"
+              value="65536"
+              c:identifier="COGL_FEATURE_TEXTURE_NPOT_MIPMAP"
+              glib:nick="texture-npot-mipmap"/>
+      <member name="texture_npot_repeat"
+              value="131072"
+              c:identifier="COGL_FEATURE_TEXTURE_NPOT_REPEAT"
+              glib:nick="texture-npot-repeat"/>
+      <member name="point_sprite"
+              value="262144"
+              c:identifier="COGL_FEATURE_POINT_SPRITE"
+              glib:nick="point-sprite"/>
+      <member name="texture_3d"
+              value="524288"
+              c:identifier="COGL_FEATURE_TEXTURE_3D"
+              glib:nick="texture-3d"/>
+      <member name="shaders_arbfp"
+              value="1048576"
+              c:identifier="COGL_FEATURE_SHADERS_ARBFP"
+              glib:nick="shaders-arbfp"/>
+      <member name="map_buffer_for_read"
+              value="2097152"
+              c:identifier="COGL_FEATURE_MAP_BUFFER_FOR_READ"
+              glib:nick="map-buffer-for-read"/>
+      <member name="map_buffer_for_write"
+              value="4194304"
+              c:identifier="COGL_FEATURE_MAP_BUFFER_FOR_WRITE"
+              glib:nick="map-buffer-for-write"/>
+    </bitfield>
+    <enumeration name="FogMode"
+                 version="1.0"
+                 glib:type-name="CoglFogMode"
+                 glib:get-type="cogl_fog_mode_get_type"
+                 c:type="CoglFogMode">
+      <doc xml:whitespace="preserve">The fog mode determines the equation used to calculate the fogging blend
+factor while fogging is enabled. The simplest %COGL_FOG_MODE_LINEAR mode
+determines f as:
+|[
+f = end - eye_distance / end - start
+]|
+Where eye_distance is the distance of the current fragment in eye
+coordinates from the origin.</doc>
+      <member name="linear"
+              value="0"
+              c:identifier="COGL_FOG_MODE_LINEAR"
+              glib:nick="linear"/>
+      <member name="exponential"
+              value="1"
+              c:identifier="COGL_FOG_MODE_EXPONENTIAL"
+              glib:nick="exponential"/>
+      <member name="exponential_squared"
+              value="2"
+              c:identifier="COGL_FOG_MODE_EXPONENTIAL_SQUARED"
+              glib:nick="exponential-squared"/>
+    </enumeration>
+    <record name="Framebuffer" c:type="CoglFramebuffer" disguised="1">
+    </record>
+    <callback name="FuncPtr" c:type="CoglFuncPtr">
+      <doc xml:whitespace="preserve">The type used by cogl for function pointers, note that this type
+is used as a generic catch-all cast for function pointers and the
+actual arguments and return type may be different.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </callback>
+    <record name="IndexArray" c:type="CoglIndexArray" disguised="1">
+    </record>
+    <record name="Indices" c:type="CoglIndices" disguised="1">
+      <method name="get_array"
+              c:identifier="cogl_indices_get_array"
+              introspectable="0">
+        <return-value>
+          <type name="IndexArray" c:type="CoglIndexArray*"/>
+        </return-value>
+      </method>
+      <method name="get_offset" c:identifier="cogl_indices_get_offset">
+        <return-value transfer-ownership="none">
+          <type name="gsize" c:type="gsize"/>
+        </return-value>
+      </method>
+      <method name="set_offset" c:identifier="cogl_indices_set_offset">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="gsize" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <enumeration name="IndicesType"
+                 glib:type-name="CoglIndicesType"
+                 glib:get-type="cogl_indices_type_get_type"
+                 c:type="CoglIndicesType">
+      <doc xml:whitespace="preserve">You should aim to use the smallest data type that gives you enough
+range, since it reduces the size of your index array and can help
+reduce the demand on memory bandwidth.
+Note that %COGL_INDICES_TYPE_UNSIGNED_INT is only supported if the
+%COGL_FEATURE_UNSIGNED_INT_INDICES feature is available. This
+should always be available on OpenGL but on OpenGL ES it will only
+be available if the GL_OES_element_index_uint extension is
+advertized.</doc>
+      <member name="byte"
+              value="0"
+              c:identifier="COGL_INDICES_TYPE_UNSIGNED_BYTE"
+              glib:nick="byte"/>
+      <member name="short"
+              value="1"
+              c:identifier="COGL_INDICES_TYPE_UNSIGNED_SHORT"
+              glib:nick="short"/>
+      <member name="int"
+              value="2"
+              c:identifier="COGL_INDICES_TYPE_UNSIGNED_INT"
+              glib:nick="int"/>
+    </enumeration>
+    <record name="Material" c:type="CoglMaterial" disguised="1">
+      <method name="copy"
+              c:identifier="cogl_material_copy"
+              version="1.2"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new material with the configuration copied from the
+source material.
+We would strongly advise developers to always aim to use
+cogl_material_copy() instead of cogl_material_new() whenever there will
+be any similarity between two materials. Copying a material helps Cogl
+keep track of a materials ancestry which we may use to help minimize GPU
+state changes.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a pointer to the newly allocated #CoglMaterial</doc>
+          <type name="Material" c:type="CoglMaterial*"/>
+        </return-value>
+      </method>
+      <method name="get_ambient"
+              c:identifier="cogl_material_get_ambient"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the current ambient color for @material</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ambient" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The location to store the ambient color</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_color"
+              c:identifier="cogl_material_get_color"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the current material color.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">The location to store the color</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_diffuse"
+              c:identifier="cogl_material_get_diffuse"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the current diffuse color for @material</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="diffuse" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The location to store the diffuse color</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_emission"
+              c:identifier="cogl_material_get_emission"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the materials current emission color.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="emission" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The location to store the emission color</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_layer_point_sprite_coords_enabled"
+              c:identifier="cogl_material_get_layer_point_sprite_coords_enabled"
+              version="1.4">
+        <doc xml:whitespace="preserve">Gets whether point sprite coordinate generation is enabled for this
+texture layer.
+point sprite coordinates.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether the texture coordinates will be replaced with</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the layer number to check.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_layer_wrap_mode_p"
+              c:identifier="cogl_material_get_layer_wrap_mode_p"
+              version="1.6">
+        <doc xml:whitespace="preserve">Returns the wrap mode for the 'p' coordinate of texture lookups on this
+layer.
+this layer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the wrap mode for the 'p' coordinate of texture lookups on</doc>
+          <type name="MaterialWrapMode" c:type="CoglMaterialWrapMode"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the layer number to change.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_layer_wrap_mode_s"
+              c:identifier="cogl_material_get_layer_wrap_mode_s"
+              version="1.6">
+        <doc xml:whitespace="preserve">Returns the wrap mode for the 's' coordinate of texture lookups on this
+layer.
+this layer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the wrap mode for the 's' coordinate of texture lookups on</doc>
+          <type name="MaterialWrapMode" c:type="CoglMaterialWrapMode"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the layer number to change.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_layer_wrap_mode_t"
+              c:identifier="cogl_material_get_layer_wrap_mode_t"
+              version="1.6">
+        <doc xml:whitespace="preserve">Returns the wrap mode for the 't' coordinate of texture lookups on this
+layer.
+this layer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the wrap mode for the 't' coordinate of texture lookups on</doc>
+          <type name="MaterialWrapMode" c:type="CoglMaterialWrapMode"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the layer number to change.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_layers" c:identifier="cogl_material_get_layers">
+        <doc xml:whitespace="preserve">This function lets you access a material's internal list of layers
+for iteration.
+&lt;note&gt;You should avoid using this API if possible since it was only
+made public by mistake and will be deprecated when we have
+suitable alternative.&lt;/note&gt;
+&lt;note&gt;It's important to understand that the list returned may not
+remain valid if you modify the material or any of the layers in any
+way and so you would have to re-get the list in that
+situation.&lt;/note&gt;
+list of #CoglMaterialLayer&lt;!-- --&gt;'s that can be passed to the
+cogl_material_layer_* functions. The list is owned by Cogl and it
+should not be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="MaterialLayer"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_n_layers"
+              c:identifier="cogl_material_get_n_layers"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the number of layers defined for the given @material</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of layers</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_point_size"
+              c:identifier="cogl_material_get_point_size"
+              version="1.4">
+        <doc xml:whitespace="preserve">Get the size of points drawn when %COGL_VERTICES_MODE_POINTS is
+used with the vertex buffer API.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the point size of the material.</doc>
+          <type name="gfloat" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="get_shininess"
+              c:identifier="cogl_material_get_shininess"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the materials current emission color.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The materials current shininess value</doc>
+          <type name="gfloat" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="get_specular"
+              c:identifier="cogl_material_get_specular"
+              version="1.0">
+        <doc xml:whitespace="preserve">Retrieves the materials current specular color.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="specular" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The location to store the specular color</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_user_program"
+              c:identifier="cogl_material_get_user_program"
+              version="1.4">
+        <doc xml:whitespace="preserve">Queries what user program has been associated with the given
+or %COGL_INVALID_HANDLE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The current user program</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </return-value>
+      </method>
+      <method name="remove_layer" c:identifier="cogl_material_remove_layer">
+        <doc xml:whitespace="preserve">This function removes a layer from your material</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Specifies the layer you want to remove</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_alpha_test_function"
+              c:identifier="cogl_material_set_alpha_test_function"
+              version="1.0">
+        <doc xml:whitespace="preserve">Before a primitive is blended with the framebuffer, it goes through an
+alpha test stage which lets you discard fragments based on the current
+alpha value. This function lets you change the function used to evaluate
+the alpha channel, and thus determine which fragments are discarded
+and which continue on to the blending stage.
+The default is %COGL_MATERIAL_ALPHA_FUNC_ALWAYS</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha_func" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A @CoglMaterialAlphaFunc constant</doc>
+            <type name="MaterialAlphaFunc" c:type="CoglMaterialAlphaFunc"/>
+          </parameter>
+          <parameter name="alpha_reference" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A reference point that the chosen alpha function uses to compare incoming fragments to.</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_ambient"
+              c:identifier="cogl_material_set_ambient"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the material's ambient color, in the standard OpenGL lighting
+model. The ambient color affects the overall color of the object.
+Since the diffuse color will be intense when the light hits the surface
+directly, the ambient will be most apparent where the light hits at a
+slant.
+The default value is (0.2, 0.2, 0.2, 1.0)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ambient" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The components of the desired ambient color</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_ambient_and_diffuse"
+              c:identifier="cogl_material_set_ambient_and_diffuse"
+              version="1.0">
+        <doc xml:whitespace="preserve">Conveniently sets the diffuse and ambient color of @material at the same
+time. See cogl_material_set_ambient() and cogl_material_set_diffuse().
+The default ambient color is (0.2, 0.2, 0.2, 1.0)
+The default diffuse color is (0.8, 0.8, 0.8, 1.0)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The components of the desired ambient and diffuse colors</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_blend"
+              c:identifier="cogl_material_set_blend"
+              version="1.0"
+              throws="1">
+        <doc xml:whitespace="preserve">If not already familiar; please refer &lt;link linkend="cogl-Blend-Strings"&gt;here&lt;/link&gt;
+for an overview of what blend strings are, and their syntax.
+Blending occurs after the alpha test function, and combines fragments with
+the framebuffer.
+Currently the only blend function Cogl exposes is ADD(). So any valid
+blend statements will be of the form:
+|[
+&amp;lt;channel-mask&amp;gt;=ADD(SRC_COLOR*(&amp;lt;factor&amp;gt;), DST_COLOR*(&amp;lt;factor&amp;gt;))
+]|
+&lt;warning&gt;The brackets around blend factors are currently not
+optional!&lt;/warning&gt;
+This is the list of source-names usable as blend factors:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;SRC_COLOR: The color of the in comming fragment&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;DST_COLOR: The color of the framebuffer&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;CONSTANT: The constant set via cogl_material_set_blend_constant()&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+The source names can be used according to the
+&lt;link linkend="cogl-Blend-String-syntax"&gt;color-source and factor syntax&lt;/link&gt;,
+so for example "(1-SRC_COLOR[A])" would be a valid factor, as would
+"(CONSTANT[RGB])"
+These can also be used as factors:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;0: (0, 0, 0, 0)&lt;/listitem&gt;
+&lt;listitem&gt;1: (1, 1, 1, 1)&lt;/listitem&gt;
+&lt;listitem&gt;SRC_ALPHA_SATURATE_FACTOR: (f,f,f,1) where f = MIN(SRC_COLOR[A],1-DST_COLOR[A])&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;note&gt;Remember; all color components are normalized to the range [0, 1]
+before computing the result of blending.&lt;/note&gt;
+&lt;example id="cogl-Blend-Strings-blend-unpremul"&gt;
+&lt;title&gt;Blend Strings/1&lt;/title&gt;
+&lt;para&gt;Blend a non-premultiplied source over a destination with
+premultiplied alpha:&lt;/para&gt;
+&lt;programlisting&gt;
+"RGB = ADD(SRC_COLOR*(SRC_COLOR[A]), DST_COLOR*(1-SRC_COLOR[A]))"
+"A   = ADD(SRC_COLOR, DST_COLOR*(1-SRC_COLOR[A]))"
+&lt;/programlisting&gt;
+&lt;/example&gt;
+&lt;example id="cogl-Blend-Strings-blend-premul"&gt;
+&lt;title&gt;Blend Strings/2&lt;/title&gt;
+&lt;para&gt;Blend a premultiplied source over a destination with
+premultiplied alpha&lt;/para&gt;
+&lt;programlisting&gt;
+"RGBA = ADD(SRC_COLOR, DST_COLOR*(1-SRC_COLOR[A]))"
+&lt;/programlisting&gt;
+&lt;/example&gt;
+The default blend string is:
+|[
+RGBA = ADD (SRC_COLOR, DST_COLOR*(1-SRC_COLOR[A]))
+]|
+That gives normal alpha-blending when the calculated color for the material
+is in premultiplied form.
+described blending is supported by the underlying driver/hardware. If
+there was an error, %FALSE is returned and @error is set accordingly (if
+present).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the blend string was successfully parsed, and the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="blend_string" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A &lt;link linkend="cogl-Blend-Strings"&gt;Cogl blend string&lt;/link&gt; describing the desired blend function.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_blend_constant"
+              c:identifier="cogl_material_set_blend_constant"
+              version="1.0">
+        <doc xml:whitespace="preserve">When blending is setup to reference a CONSTANT blend factor then
+blending will depend on the constant set with this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="constant_color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The constant color you want</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_color"
+              c:identifier="cogl_material_set_color"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the basic color of the material, used when no lighting is enabled.
+Note that if you don't add any layers to the material then the color
+will be blended unmodified with the destination; the default blend
+semi-transparent red. See cogl_color_premultiply().
+The default value is (1.0, 1.0, 1.0, 1.0)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The components of the color</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_color4f"
+              c:identifier="cogl_material_set_color4f"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the basic color of the material, used when no lighting is enabled.
+The default value is (1.0, 1.0, 1.0, 1.0)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="red" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The red component</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="green" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The green component</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="blue" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The blue component</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The alpha component</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_color4ub"
+              c:identifier="cogl_material_set_color4ub"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the basic color of the material, used when no lighting is enabled.
+The default value is (0xff, 0xff, 0xff, 0xff)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="red" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The red component</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="green" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The green component</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="blue" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The blue component</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The alpha component</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_diffuse"
+              c:identifier="cogl_material_set_diffuse"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the material's diffuse color, in the standard OpenGL lighting
+model. The diffuse color is most intense where the light hits the
+surface directly - perpendicular to the surface.
+The default value is (0.8, 0.8, 0.8, 1.0)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="diffuse" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The components of the desired diffuse color</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_emission"
+              c:identifier="cogl_material_set_emission"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the material's emissive color, in the standard OpenGL lighting
+model. It will look like the surface is a light source emitting this
+color.
+The default value is (0.0, 0.0, 0.0, 1.0)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="emission" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The components of the desired emissive color</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_layer"
+              c:identifier="cogl_material_set_layer"
+              version="1.0">
+        <doc xml:whitespace="preserve">In addition to the standard OpenGL lighting model a Cogl material may have
+one or more layers comprised of textures that can be blended together in
+order, with a number of different texture combine modes. This function
+defines a new texture layer.
+The index values of multiple layers do not have to be consecutive; it is
+only their relative order that is important.
+&lt;note&gt;In the future, we may define other types of material layers, such
+as purely GLSL based layers.&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of the layer</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="texture" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #CoglHandle for the layer object</doc>
+            <type name="Handle" c:type="CoglHandle"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_layer_combine"
+              c:identifier="cogl_material_set_layer_combine"
+              version="1.0"
+              throws="1">
+        <doc xml:whitespace="preserve">If not already familiar; you can refer
+&lt;link linkend="cogl-Blend-Strings"&gt;here&lt;/link&gt; for an overview of what blend
+strings are and there syntax.
+These are all the functions available for texture combining:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;REPLACE(arg0) = arg0&lt;/listitem&gt;
+&lt;listitem&gt;MODULATE(arg0, arg1) = arg0 x arg1&lt;/listitem&gt;
+&lt;listitem&gt;ADD(arg0, arg1) = arg0 + arg1&lt;/listitem&gt;
+&lt;listitem&gt;ADD_SIGNED(arg0, arg1) = arg0 + arg1 - 0.5&lt;/listitem&gt;
+&lt;listitem&gt;INTERPOLATE(arg0, arg1, arg2) = arg0 x arg2 + arg1 x (1 - arg2)&lt;/listitem&gt;
+&lt;listitem&gt;SUBTRACT(arg0, arg1) = arg0 - arg1&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;programlisting&gt;
+DOT3_RGB(arg0, arg1) = 4 x ((arg0[R] - 0.5)) * (arg1[R] - 0.5) +
+(arg0[G] - 0.5)) * (arg1[G] - 0.5) +
+(arg0[B] - 0.5)) * (arg1[B] - 0.5))
+&lt;/programlisting&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;programlisting&gt;
+DOT3_RGBA(arg0, arg1) = 4 x ((arg0[R] - 0.5)) * (arg1[R] - 0.5) +
+(arg0[G] - 0.5)) * (arg1[G] - 0.5) +
+(arg0[B] - 0.5)) * (arg1[B] - 0.5))
+&lt;/programlisting&gt;
+&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+Refer to the
+&lt;link linkend="cogl-Blend-String-syntax"&gt;color-source syntax&lt;/link&gt; for
+describing the arguments. The valid source names for texture combining
+are:
+&lt;variablelist&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;TEXTURE&lt;/term&gt;
+&lt;listitem&gt;Use the color from the current texture layer&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;TEXTURE_0, TEXTURE_1, etc&lt;/term&gt;
+&lt;listitem&gt;Use the color from the specified texture layer&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;CONSTANT&lt;/term&gt;
+&lt;listitem&gt;Use the color from the constant given with
+cogl_material_set_layer_constant()&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;PRIMARY&lt;/term&gt;
+&lt;listitem&gt;Use the color of the material as set with
+cogl_material_set_color()&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;PREVIOUS&lt;/term&gt;
+&lt;listitem&gt;Either use the texture color from the previous layer, or
+if this is layer 0, use the color of the material as set with
+cogl_material_set_color()&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;/variablelist&gt;
+&lt;refsect2 id="cogl-Layer-Combine-Examples"&gt;
+&lt;title&gt;Layer Combine Examples&lt;/title&gt;
+&lt;para&gt;This is effectively what the default blending is:&lt;/para&gt;
+&lt;informalexample&gt;&lt;programlisting&gt;
+RGBA = MODULATE (PREVIOUS, TEXTURE)
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+&lt;para&gt;This could be used to cross-fade between two images, using
+the alpha component of a constant as the interpolator. The constant
+color is given by calling cogl_material_set_layer_constant.&lt;/para&gt;
+&lt;informalexample&gt;&lt;programlisting&gt;
+RGBA = INTERPOLATE (PREVIOUS, TEXTURE, CONSTANT[A])
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+&lt;/refsect2&gt;
+&lt;note&gt;You can't give a multiplication factor for arguments as you can
+with blending.&lt;/note&gt;
+described texture combining is supported by the underlying driver and
+or hardware. On failure, %FALSE is returned and @error is set</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the blend string was successfully parsed, and the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Specifies the layer you want define a combine function for</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="blend_string" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A &lt;link linkend="cogl-Blend-Strings"&gt;Cogl blend string&lt;/link&gt; describing the desired texture combine function.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_layer_combine_constant"
+              c:identifier="cogl_material_set_layer_combine_constant"
+              version="1.0">
+        <doc xml:whitespace="preserve">When you are using the 'CONSTANT' color source in a layer combine
+description then you can use this function to define its value.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Specifies the layer you want to specify a constant used for texture combining</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="constant" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The constant color you want</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_layer_filters"
+              c:identifier="cogl_material_set_layer_filters">
+        <doc xml:whitespace="preserve">Changes the decimation and interpolation filters used when a texture is
+drawn at other scales than 100%.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the layer number to change.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="min_filter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the filter used when scaling a texture down.</doc>
+            <type name="MaterialFilter" c:type="CoglMaterialFilter"/>
+          </parameter>
+          <parameter name="mag_filter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the filter used when magnifying a texture.</doc>
+            <type name="MaterialFilter" c:type="CoglMaterialFilter"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_layer_matrix"
+              c:identifier="cogl_material_set_layer_matrix">
+        <doc xml:whitespace="preserve">This function lets you set a matrix that can be used to e.g. translate
+and rotate a single layer of a material used to fill your geometry.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index for the layer inside @material</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="matrix" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the transformation matrix for the layer</doc>
+            <type name="Matrix" c:type="CoglMatrix*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_layer_point_sprite_coords_enabled"
+              c:identifier="cogl_material_set_layer_point_sprite_coords_enabled"
+              version="1.4"
+              throws="1">
+        <doc xml:whitespace="preserve">When rendering points, if @enable is %TRUE then the texture
+coordinates for this layer will be replaced with coordinates that
+vary from 0.0 to 1.0 across the primitive. The top left of the
+point will have the coordinates 0.0,0.0 and the bottom right will
+have 1.0,1.0. If @enable is %FALSE then the coordinates will be
+fixed for the entire point.
+This function will only work if %COGL_FEATURE_POINT_SPRITE is
+available. If the feature is not available then the function will
+return %FALSE and set @error.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the function succeeds, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the layer number to change.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="enable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to enable point sprite coord generation.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_layer_wrap_mode"
+              c:identifier="cogl_material_set_layer_wrap_mode"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the wrap mode for all three coordinates of texture lookups on
+this layer. This is equivalent to calling
+cogl_material_set_layer_wrap_mode_s(),
+cogl_material_set_layer_wrap_mode_t() and
+cogl_material_set_layer_wrap_mode_p() separately.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the layer number to change.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new wrap mode</doc>
+            <type name="MaterialWrapMode" c:type="CoglMaterialWrapMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_layer_wrap_mode_p"
+              c:identifier="cogl_material_set_layer_wrap_mode_p"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the wrap mode for the 'p' coordinate of texture lookups on
+this layer. 'p' is the third coordinate.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the layer number to change.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new wrap mode</doc>
+            <type name="MaterialWrapMode" c:type="CoglMaterialWrapMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_layer_wrap_mode_s"
+              c:identifier="cogl_material_set_layer_wrap_mode_s"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the wrap mode for the 's' coordinate of texture lookups on this layer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the layer number to change.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new wrap mode</doc>
+            <type name="MaterialWrapMode" c:type="CoglMaterialWrapMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_layer_wrap_mode_t"
+              c:identifier="cogl_material_set_layer_wrap_mode_t"
+              version="1.4">
+        <doc xml:whitespace="preserve">Sets the wrap mode for the 't' coordinate of texture lookups on this layer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the layer number to change.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new wrap mode</doc>
+            <type name="MaterialWrapMode" c:type="CoglMaterialWrapMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_point_size"
+              c:identifier="cogl_material_set_point_size"
+              version="1.4">
+        <doc xml:whitespace="preserve">Changes the size of points drawn when %COGL_VERTICES_MODE_POINTS is
+used with the vertex buffer API. Note that typically the GPU will
+only support a limited minimum and maximum range of point sizes. If
+the chosen point size is outside that range then the nearest value
+within that range will be used instead. The size of a point is in
+screen space so it will be the same regardless of any
+transformations. The default point size is 1.0.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="point_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new point size.</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_shininess"
+              c:identifier="cogl_material_set_shininess"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the shininess of the material, in the standard OpenGL lighting
+model, which determines the size of the specular highlights. A
+higher @shininess will produce smaller highlights which makes the
+object appear more shiny.
+The default value is 0.0</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="shininess" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The desired shininess; must be &gt;= 0.0</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_specular"
+              c:identifier="cogl_material_set_specular"
+              version="1.0">
+        <doc xml:whitespace="preserve">Sets the material's specular color, in the standard OpenGL lighting
+model. The intensity of the specular color depends on the viewport
+position, and is brightest along the lines of reflection.
+The default value is (0.0, 0.0, 0.0, 1.0)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="specular" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The components of the desired specular color</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_user_program"
+              c:identifier="cogl_material_set_user_program"
+              version="1.4">
+        <doc xml:whitespace="preserve">Associates a linked CoglProgram with the given material so that the
+program can take full control of vertex and/or fragment processing.
+This is an example of how it can be used to associate an ARBfp
+program with a #CoglMaterial:
+|[
+CoglHandle shader;
+CoglHandle program;
+CoglMaterial *material;
+shader = cogl_create_shader (COGL_SHADER_TYPE_FRAGMENT);
+cogl_shader_source (shader,
+"!!ARBfp1.0\n"
+"MOV result.color,fragment.color;\n"
+"END\n");
+cogl_shader_compile (shader);
+program = cogl_create_program ();
+cogl_program_attach_shader (program, shader);
+cogl_program_link (program);
+material = cogl_material_new ();
+cogl_material_set_user_program (material, program);
+cogl_set_source_color4ub (0xff, 0x00, 0x00, 0xff);
+cogl_rectangle (0, 0, 100, 100);
+]|
+It is possibly worth keeping in mind that this API is not part of
+the long term design for how we want to expose shaders to Cogl
+developers (We are planning on deprecating the cogl_program and
+cogl_shader APIs in favour of a "snippet" framework) but in the
+meantime we hope this will handle most practical GLSL and ARBfp
+requirements.
+Also remember you need to check for either the
+%COGL_FEATURE_SHADERS_GLSL or %COGL_FEATURE_SHADERS_ARBFP before
+using the cogl_program or cogl_shader API.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="program" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #CoglHandle to a linked CoglProgram</doc>
+            <type name="Handle" c:type="CoglHandle"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <enumeration name="MaterialAlphaFunc"
+                 glib:type-name="CoglMaterialAlphaFunc"
+                 glib:get-type="cogl_material_alpha_func_get_type"
+                 c:type="CoglMaterialAlphaFunc">
+      <doc xml:whitespace="preserve">Alpha testing happens before blending primitives with the framebuffer and
+gives an opportunity to discard fragments based on a comparison with the
+incoming alpha value and a reference alpha value. The #CoglMaterialAlphaFunc
+determines how the comparison is done.</doc>
+      <member name="never"
+              value="512"
+              c:identifier="COGL_MATERIAL_ALPHA_FUNC_NEVER"
+              glib:nick="never"/>
+      <member name="less"
+              value="513"
+              c:identifier="COGL_MATERIAL_ALPHA_FUNC_LESS"
+              glib:nick="less"/>
+      <member name="equal"
+              value="514"
+              c:identifier="COGL_MATERIAL_ALPHA_FUNC_EQUAL"
+              glib:nick="equal"/>
+      <member name="lequal"
+              value="515"
+              c:identifier="COGL_MATERIAL_ALPHA_FUNC_LEQUAL"
+              glib:nick="lequal"/>
+      <member name="greater"
+              value="516"
+              c:identifier="COGL_MATERIAL_ALPHA_FUNC_GREATER"
+              glib:nick="greater"/>
+      <member name="notequal"
+              value="517"
+              c:identifier="COGL_MATERIAL_ALPHA_FUNC_NOTEQUAL"
+              glib:nick="notequal"/>
+      <member name="gequal"
+              value="518"
+              c:identifier="COGL_MATERIAL_ALPHA_FUNC_GEQUAL"
+              glib:nick="gequal"/>
+      <member name="always"
+              value="519"
+              c:identifier="COGL_MATERIAL_ALPHA_FUNC_ALWAYS"
+              glib:nick="always"/>
+    </enumeration>
+    <enumeration name="MaterialFilter"
+                 glib:type-name="CoglMaterialFilter"
+                 glib:get-type="cogl_material_filter_get_type"
+                 c:type="CoglMaterialFilter">
+      <doc xml:whitespace="preserve">Texture filtering is used whenever the current pixel maps either to more
+than one texture element (texel) or less than one. These filter enums
+correspond to different strategies used to come up with a pixel color, by
+possibly referring to multiple neighbouring texels and taking a weighted
+average or simply using the nearest texel.</doc>
+      <member name="nearest"
+              value="9728"
+              c:identifier="COGL_MATERIAL_FILTER_NEAREST"
+              glib:nick="nearest"/>
+      <member name="linear"
+              value="9729"
+              c:identifier="COGL_MATERIAL_FILTER_LINEAR"
+              glib:nick="linear"/>
+      <member name="nearest_mipmap_nearest"
+              value="9984"
+              c:identifier="COGL_MATERIAL_FILTER_NEAREST_MIPMAP_NEAREST"
+              glib:nick="nearest-mipmap-nearest"/>
+      <member name="linear_mipmap_nearest"
+              value="9985"
+              c:identifier="COGL_MATERIAL_FILTER_LINEAR_MIPMAP_NEAREST"
+              glib:nick="linear-mipmap-nearest"/>
+      <member name="nearest_mipmap_linear"
+              value="9986"
+              c:identifier="COGL_MATERIAL_FILTER_NEAREST_MIPMAP_LINEAR"
+              glib:nick="nearest-mipmap-linear"/>
+      <member name="linear_mipmap_linear"
+              value="9987"
+              c:identifier="COGL_MATERIAL_FILTER_LINEAR_MIPMAP_LINEAR"
+              glib:nick="linear-mipmap-linear"/>
+    </enumeration>
+    <record name="MaterialLayer" c:type="CoglMaterialLayer" disguised="1">
+      <method name="get_mag_filter"
+              c:identifier="cogl_material_layer_get_mag_filter">
+        <doc xml:whitespace="preserve">Queries the currently set downscaling filter for a material later</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current downscaling filter</doc>
+          <type name="MaterialFilter" c:type="CoglMaterialFilter"/>
+        </return-value>
+      </method>
+      <method name="get_min_filter"
+              c:identifier="cogl_material_layer_get_min_filter">
+        <doc xml:whitespace="preserve">Queries the currently set downscaling filter for a material layer</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the current downscaling filter</doc>
+          <type name="MaterialFilter" c:type="CoglMaterialFilter"/>
+        </return-value>
+      </method>
+      <method name="get_texture"
+              c:identifier="cogl_material_layer_get_texture">
+        <doc xml:whitespace="preserve">Extracts a texture handle for a specific layer.
+&lt;note&gt;In the future Cogl may support purely GLSL based layers; for those
+layers this function which will likely return %COGL_INVALID_HANDLE if you
+try to get the texture handle from them. Considering this scenario, you
+should call cogl_material_layer_get_type() first in order check it is of
+type %COGL_MATERIAL_LAYER_TYPE_TEXTURE before calling this function.&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle for the texture inside the layer</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </return-value>
+      </method>
+      <method name="get_wrap_mode_p"
+              c:identifier="cogl_material_layer_get_wrap_mode_p"
+              version="1.4">
+        <doc xml:whitespace="preserve">Gets the wrap mode for the 'p' coordinate of texture lookups on
+this layer. 'p' is the third coordinate.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the wrap mode value for the p coordinate.</doc>
+          <type name="MaterialWrapMode" c:type="CoglMaterialWrapMode"/>
+        </return-value>
+      </method>
+      <method name="get_wrap_mode_s"
+              c:identifier="cogl_material_layer_get_wrap_mode_s"
+              version="1.4">
+        <doc xml:whitespace="preserve">Gets the wrap mode for the 's' coordinate of texture lookups on this layer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the wrap mode value for the s coordinate.</doc>
+          <type name="MaterialWrapMode" c:type="CoglMaterialWrapMode"/>
+        </return-value>
+      </method>
+      <method name="get_wrap_mode_t"
+              c:identifier="cogl_material_layer_get_wrap_mode_t"
+              version="1.4">
+        <doc xml:whitespace="preserve">Gets the wrap mode for the 't' coordinate of texture lookups on this layer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the wrap mode value for the t coordinate.</doc>
+          <type name="MaterialWrapMode" c:type="CoglMaterialWrapMode"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="MaterialLayerType"
+                 version="1.0"
+                 glib:type-name="CoglMaterialLayerType"
+                 glib:get-type="cogl_material_layer_type_get_type"
+                 c:type="CoglMaterialLayerType">
+      <doc xml:whitespace="preserve">Available types of layers for a #CoglMaterial. This enumeration
+might be expanded in later versions.</doc>
+      <member name="texture"
+              value="0"
+              c:identifier="COGL_MATERIAL_LAYER_TYPE_TEXTURE"
+              glib:nick="texture"/>
+    </enumeration>
+    <enumeration name="MaterialWrapMode"
+                 version="1.4"
+                 glib:type-name="CoglMaterialWrapMode"
+                 glib:get-type="cogl_material_wrap_mode_get_type"
+                 c:type="CoglMaterialWrapMode">
+      <doc xml:whitespace="preserve">The wrap mode specifies what happens when texture coordinates
+outside the range 0→1 are used. Note that if the filter mode is
+anything but %COGL_MATERIAL_FILTER_NEAREST then texels outside the
+range 0→1 might be used even when the coordinate is exactly 0 or 1
+because OpenGL will try to sample neighbouring pixels. For example
+if you are trying to render the full texture then you may get
+artifacts around the edges when the pixels from the other side are
+merged in if the wrap mode is set to repeat.</doc>
+      <member name="repeat"
+              value="10497"
+              c:identifier="COGL_MATERIAL_WRAP_MODE_REPEAT"
+              glib:nick="repeat"/>
+      <member name="clamp_to_edge"
+              value="33071"
+              c:identifier="COGL_MATERIAL_WRAP_MODE_CLAMP_TO_EDGE"
+              glib:nick="clamp-to-edge"/>
+      <member name="automatic"
+              value="519"
+              c:identifier="COGL_MATERIAL_WRAP_MODE_AUTOMATIC"
+              glib:nick="automatic"/>
+    </enumeration>
+    <record name="Matrix" c:type="CoglMatrix">
+      <doc xml:whitespace="preserve">A CoglMatrix holds a 4x4 transform matrix. This is a single precision,
+column-major matrix which means it is compatible with what OpenGL expects.
+A CoglMatrix can represent transforms such as, rotations, scaling,
+translation, sheering, and linear projections. You can combine these
+transforms by multiplying multiple matrices in the order you want them
+applied.
+The transformation of a vertex (x, y, z, w) by a CoglMatrix is given by:
+|[
+x_new = xx * x + xy * y + xz * z + xw * w
+y_new = yx * x + yy * y + yz * z + yw * w
+z_new = zx * x + zy * y + zz * z + zw * w
+w_new = wx * x + wy * y + wz * z + ww * w
+]|
+Where w is normally 1
+&lt;note&gt;You must consider the members of the CoglMatrix structure read only,
+and all matrix modifications must be done via the cogl_matrix API. This
+allows Cogl to annotate the matrices internally. Violation of this will give
+undefined results. If you need to initialize a matrix with a constant other
+than the identity matrix you can use cogl_matrix_init_from_array().&lt;/note&gt;</doc>
+      <field name="xx" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="yx" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="zx" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="wx" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="xy" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="yy" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="zy" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="wy" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="xz" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="yz" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="zz" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="wz" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="xw" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="yw" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="zw" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="ww" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="inv" readable="0" private="1">
+        <array zero-terminated="0" c:type="gfloat" fixed-size="16">
+          <type name="gfloat" c:type="float"/>
+        </array>
+      </field>
+      <field name="type" readable="0" private="1">
+        <type name="guint" c:type="unsigned"/>
+      </field>
+      <field name="flags" readable="0" private="1">
+        <type name="guint" c:type="unsigned"/>
+      </field>
+      <field name="_padding3" readable="0" private="1">
+        <type name="guint" c:type="unsigned"/>
+      </field>
+      <method name="copy"
+              c:identifier="cogl_matrix_copy"
+              version="1.6"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Allocates a new #CoglMatrix on the heap and initializes it with
+the same values as @matrix.
+cogl_matrix_free()</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">A newly allocated #CoglMatrix which should be freed using</doc>
+          <type name="Matrix" c:type="CoglMatrix*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="cogl_matrix_free" version="1.6">
+        <doc xml:whitespace="preserve">Frees a #CoglMatrix that was previously allocated via a call to
+cogl_matrix_copy().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="frustum" c:identifier="cogl_matrix_frustum">
+        <doc xml:whitespace="preserve">Multiplies @matrix by the given frustum perspective matrix.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="left" transfer-ownership="none">
+            <doc xml:whitespace="preserve">coord of left vertical clipping plane</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="right" transfer-ownership="none">
+            <doc xml:whitespace="preserve">coord of right vertical clipping plane</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="bottom" transfer-ownership="none">
+            <doc xml:whitespace="preserve">coord of bottom horizontal clipping plane</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="top" transfer-ownership="none">
+            <doc xml:whitespace="preserve">coord of top horizontal clipping plane</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="z_near" transfer-ownership="none">
+            <doc xml:whitespace="preserve">positive distance to near depth clipping plane</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="z_far" transfer-ownership="none">
+            <doc xml:whitespace="preserve">positive distance to far depth clipping plane</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_array" c:identifier="cogl_matrix_get_array">
+        <doc xml:whitespace="preserve">Casts @matrix to a float array which can be directly passed to OpenGL.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to the float array</doc>
+          <type name="gfloat" c:type="float*"/>
+        </return-value>
+      </method>
+      <method name="get_inverse"
+              c:identifier="cogl_matrix_get_inverse"
+              version="1.2">
+        <doc xml:whitespace="preserve">Gets the inverse transform of a given matrix and uses it to initialize
+a new #CoglMatrix.
+&lt;note&gt;Although the first parameter is annotated as const to indicate
+that the transform it represents isn't modified this function may
+technically save a copy of the inverse transform within the given
+#CoglMatrix so that subsequent requests for the inverse transform may
+avoid costly inversion calculations.&lt;/note&gt;
+for degenerate transformations that can't be inverted (in this case the</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the inverse was successfully calculated or %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="inverse"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">The destination for a 4x4 inverse transformation matrix</doc>
+            <type name="Matrix" c:type="CoglMatrix*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="init_from_array"
+              c:identifier="cogl_matrix_init_from_array">
+        <doc xml:whitespace="preserve">Initializes @matrix with the contents of @array</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="array" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A linear array of 16 floats (column-major order)</doc>
+            <type name="gfloat" c:type="float*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="init_identity" c:identifier="cogl_matrix_init_identity">
+        <doc xml:whitespace="preserve">Resets matrix to the identity matrix:
+|[
+.xx=1; .xy=0; .xz=0; .xw=0;
+.yx=0; .yy=1; .yz=0; .yw=0;
+.zx=0; .zy=0; .zz=1; .zw=0;
+.wx=0; .wy=0; .wz=0; .ww=1;
+]|</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="multiply" c:identifier="cogl_matrix_multiply">
+        <doc xml:whitespace="preserve">Multiplies the two supplied matrices together and stores
+the resulting matrix inside @result.
+&lt;note&gt;It is possible to multiply the @a matrix in-place, so</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="a" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A 4x4 transformation matrix</doc>
+            <type name="Matrix" c:type="CoglMatrix*"/>
+          </parameter>
+          <parameter name="b" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A 4x4 transformation matrix</doc>
+            <type name="Matrix" c:type="CoglMatrix*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ortho" c:identifier="cogl_matrix_ortho">
+        <doc xml:whitespace="preserve">Multiplies @matrix by a parallel projection matrix.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="left" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The coordinate for the left clipping plane</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="right" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The coordinate for the right clipping plane</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="bottom" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The coordinate for the bottom clipping plane</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="top" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The coordinate for the top clipping plane</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="z_near" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The coordinate for the near clipping plane (may be negative if the plane is behind the viewer)</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="z_far" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The coordinate for the far clipping plane (may be negative if the plane is behind the viewer)</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="perspective" c:identifier="cogl_matrix_perspective">
+        <doc xml:whitespace="preserve">Multiplies @matrix by the described perspective matrix
+&lt;note&gt;You should be careful not to have to great a @z_far / @z_near ratio
+since that will reduce the effectiveness of depth testing since there wont
+be enough precision to identify the depth of objects near to each
+other.&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fov_y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A field of view angle for the Y axis</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="aspect" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The ratio of width to height determining the field of view angle for the x axis.</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="z_near" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The distance to the near clip plane. Never pass 0 and always pass a positive number.</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="z_far" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The distance to the far clip plane. (Should always be positive)</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="rotate" c:identifier="cogl_matrix_rotate">
+        <doc xml:whitespace="preserve">Multiplies @matrix with a rotation matrix that applies a rotation
+of @angle degrees around the specified 3D vector.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The angle you want to rotate in degrees</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">X component of your rotation vector</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Y component of your rotation vector</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="z" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Z component of your rotation vector</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="scale" c:identifier="cogl_matrix_scale">
+        <doc xml:whitespace="preserve">Multiplies @matrix with a transform matrix that scales along the X,
+Y and Z axis.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sx" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The X scale factor</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="sy" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The Y scale factor</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="sz" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The Z scale factor</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="transform_point"
+              c:identifier="cogl_matrix_transform_point">
+        <doc xml:whitespace="preserve">Transforms a point whos position is given and returned as four float
+components.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">The X component of your points position</doc>
+            <type name="gfloat" c:type="float*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">The Y component of your points position</doc>
+            <type name="gfloat" c:type="float*"/>
+          </parameter>
+          <parameter name="z"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">The Z component of your points position</doc>
+            <type name="gfloat" c:type="float*"/>
+          </parameter>
+          <parameter name="w"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">The W component of your points position</doc>
+            <type name="gfloat" c:type="float*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="translate" c:identifier="cogl_matrix_translate">
+        <doc xml:whitespace="preserve">Multiplies @matrix with a transform matrix that translates along
+the X, Y and Z axis.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The X translation you want to apply</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The Y translation you want to apply</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="z" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The Z translation you want to apply</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="Object" c:type="CoglObject" disguised="1">
+      <method name="get_user_data"
+              c:identifier="cogl_object_get_user_data"
+              version="1.4"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Finds the user data previously associated with @object using
+the given @key. If no user data has been associated with @object
+for the given @key this function returns NULL.
+with @object using the given @key; or %NULL if no associated
+data is found.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The user data previously associated</doc>
+          <type name="gpointer" c:type="void*"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The address of a #CoglUserDataKey which provides a unique value with which to index the private data.</doc>
+            <type name="UserDataKey" c:type="CoglUserDataKey*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_user_data"
+              c:identifier="cogl_object_set_user_data"
+              version="1.4"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Associates some private @user_data with a given #CoglObject. To
+later remove the association call cogl_object_set_user_data() with
+the same @key but NULL for the @user_data.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The address of a #CoglUserDataKey which provides a unique value with which to index the private data.</doc>
+            <type name="UserDataKey" c:type="CoglUserDataKey*"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The data to associate with the given object, or %NULL to remove a previous association.</doc>
+            <type name="gpointer" c:type="void*"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #CoglUserDataDestroyCallback to call if the object is destroyed or if the association is removed by later setting %NULL data for the same key.</doc>
+            <type name="UserDataDestroyCallback"
+                  c:type="CoglUserDataDestroyCallback"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <constant name="PIXEL_FORMAT_24" value="2">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PIXEL_FORMAT_32" value="3">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PREMULT_BIT" value="128">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="Path" c:type="CoglPath" disguised="1">
+      <method name="copy" c:identifier="cogl_path_copy" introspectable="0">
+        <doc xml:whitespace="preserve">Returns a new copy of the path in @path. The new path has a
+reference count of 1 so you should unref it with
+cogl_object_unref() if you no longer need it.
+Internally the path will share the data until one of the paths is
+modified so copying paths should be relatively cheap.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a copy of the path in @path.</doc>
+          <type name="Path" c:type="CoglPath*"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="PathFillRule"
+                 version="1.4"
+                 glib:type-name="CoglPathFillRule"
+                 glib:get-type="cogl_path_fill_rule_get_type"
+                 c:type="CoglPathFillRule">
+      <doc xml:whitespace="preserve">#CoglPathFillRule is used to determine how a path is filled. There
+are two options - 'non-zero' and 'even-odd'. To work out whether any
+point will be filled imagine drawing an infinetely long line in any
+direction from that point. The number of times and the direction
+that the edges of the path crosses this line determines whether the
+line is filled as described below. Any open sub paths are treated
+as if there was an extra line joining the first point and the last
+point.
+The default fill rule is %COGL_PATH_FILL_RULE_EVEN_ODD. The fill
+rule is attached to the current path so preserving a path with
+cogl_get_path() also preserves the fill rule. Calling
+cogl_path_new() resets the current fill rule to the default.
+&lt;figure id="fill-rule-non-zero"&gt;
+&lt;title&gt;Example of filling various paths using the non-zero rule&lt;/title&gt;
+&lt;graphic fileref="fill-rule-non-zero.png" format="PNG"/&gt;
+&lt;/figure&gt;
+&lt;figure id="fill-rule-even-odd"&gt;
+&lt;title&gt;Example of filling various paths using the even-odd rule&lt;/title&gt;
+&lt;graphic fileref="fill-rule-even-odd.png" format="PNG"/&gt;
+&lt;/figure&gt;</doc>
+      <member name="non_zero"
+              value="0"
+              c:identifier="COGL_PATH_FILL_RULE_NON_ZERO"
+              glib:nick="non-zero"/>
+      <member name="even_odd"
+              value="1"
+              c:identifier="COGL_PATH_FILL_RULE_EVEN_ODD"
+              glib:nick="even-odd"/>
+    </enumeration>
+    <record name="Pipeline" c:type="CoglPipeline" disguised="1">
+      <method name="copy"
+              c:identifier="cogl_pipeline_copy"
+              version="2.0"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new pipeline with the configuration copied from the
+source pipeline.
+We would strongly advise developers to always aim to use
+cogl_pipeline_copy() instead of cogl_pipeline_new() whenever there will
+be any similarity between two pipelines. Copying a pipeline helps Cogl
+keep track of a pipelines ancestry which we may use to help minimize GPU
+state changes.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a pointer to the newly allocated #CoglPipeline</doc>
+          <type name="Pipeline" c:type="CoglPipeline*"/>
+        </return-value>
+      </method>
+      <method name="get_alpha_test_function"
+              c:identifier="cogl_pipeline_get_alpha_test_function"
+              version="2.0">
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The alpha test function of @pipeline.</doc>
+          <type name="PipelineAlphaFunc" c:type="CoglPipelineAlphaFunc"/>
+        </return-value>
+      </method>
+      <method name="get_alpha_test_reference"
+              c:identifier="cogl_pipeline_get_alpha_test_reference"
+              version="2.0">
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The alpha test reference value of @pipeline.</doc>
+          <type name="gfloat" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="get_ambient"
+              c:identifier="cogl_pipeline_get_ambient"
+              version="2.0">
+        <doc xml:whitespace="preserve">Retrieves the current ambient color for @pipeline</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ambient" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The location to store the ambient color</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_color"
+              c:identifier="cogl_pipeline_get_color"
+              version="2.0">
+        <doc xml:whitespace="preserve">Retrieves the current pipeline color.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">The location to store the color</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_diffuse"
+              c:identifier="cogl_pipeline_get_diffuse"
+              version="2.0">
+        <doc xml:whitespace="preserve">Retrieves the current diffuse color for @pipeline</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="diffuse" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The location to store the diffuse color</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_emission"
+              c:identifier="cogl_pipeline_get_emission"
+              version="2.0">
+        <doc xml:whitespace="preserve">Retrieves the pipelines current emission color.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="emission" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The location to store the emission color</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_layer_point_sprite_coords_enabled"
+              c:identifier="cogl_pipeline_get_layer_point_sprite_coords_enabled"
+              version="2.0">
+        <doc xml:whitespace="preserve">Gets whether point sprite coordinate generation is enabled for this
+texture layer.
+point sprite coordinates.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether the texture coordinates will be replaced with</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the layer number to check.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_layer_wrap_mode_p"
+              c:identifier="cogl_pipeline_get_layer_wrap_mode_p"
+              version="1.6">
+        <doc xml:whitespace="preserve">Returns the wrap mode for the 'p' coordinate of texture lookups on this
+layer.
+this layer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the wrap mode for the 'p' coordinate of texture lookups on</doc>
+          <type name="PipelineWrapMode" c:type="CoglPipelineWrapMode"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the layer number to change.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_layer_wrap_mode_s"
+              c:identifier="cogl_pipeline_get_layer_wrap_mode_s"
+              version="1.6">
+        <doc xml:whitespace="preserve">Returns the wrap mode for the 's' coordinate of texture lookups on this
+layer.
+this layer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the wrap mode for the 's' coordinate of texture lookups on</doc>
+          <type name="PipelineWrapMode" c:type="CoglPipelineWrapMode"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the layer number to change.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_layer_wrap_mode_t"
+              c:identifier="cogl_pipeline_get_layer_wrap_mode_t"
+              version="1.6">
+        <doc xml:whitespace="preserve">Returns the wrap mode for the 't' coordinate of texture lookups on this
+layer.
+this layer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the wrap mode for the 't' coordinate of texture lookups on</doc>
+          <type name="PipelineWrapMode" c:type="CoglPipelineWrapMode"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the layer number to change.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_n_layers"
+              c:identifier="cogl_pipeline_get_n_layers"
+              version="2.0">
+        <doc xml:whitespace="preserve">Retrieves the number of layers defined for the given @pipeline</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of layers</doc>
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_shininess"
+              c:identifier="cogl_pipeline_get_shininess"
+              version="2.0">
+        <doc xml:whitespace="preserve">Retrieves the pipelines current emission color.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The pipelines current shininess value</doc>
+          <type name="gfloat" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="get_specular"
+              c:identifier="cogl_pipeline_get_specular"
+              version="2.0">
+        <doc xml:whitespace="preserve">Retrieves the pipelines current specular color.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="specular" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The location to store the specular color</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_user_program"
+              c:identifier="cogl_pipeline_get_user_program"
+              version="2.0"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Queries what user program has been associated with the given</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">The current user program or %COGL_INVALID_HANDLE.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </return-value>
+      </method>
+      <method name="remove_layer" c:identifier="cogl_pipeline_remove_layer">
+        <doc xml:whitespace="preserve">This function removes a layer from your pipeline</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Specifies the layer you want to remove</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_alpha_test_function"
+              c:identifier="cogl_pipeline_set_alpha_test_function"
+              version="2.0">
+        <doc xml:whitespace="preserve">Before a primitive is blended with the framebuffer, it goes through an
+alpha test stage which lets you discard fragments based on the current
+alpha value. This function lets you change the function used to evaluate
+the alpha channel, and thus determine which fragments are discarded
+and which continue on to the blending stage.
+The default is %COGL_PIPELINE_ALPHA_FUNC_ALWAYS</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha_func" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A @CoglPipelineAlphaFunc constant</doc>
+            <type name="PipelineAlphaFunc" c:type="CoglPipelineAlphaFunc"/>
+          </parameter>
+          <parameter name="alpha_reference" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A reference point that the chosen alpha function uses to compare incoming fragments to.</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_ambient"
+              c:identifier="cogl_pipeline_set_ambient"
+              version="2.0">
+        <doc xml:whitespace="preserve">Sets the pipeline's ambient color, in the standard OpenGL lighting
+model. The ambient color affects the overall color of the object.
+Since the diffuse color will be intense when the light hits the surface
+directly, the ambient will be most apparent where the light hits at a
+slant.
+The default value is (0.2, 0.2, 0.2, 1.0)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ambient" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The components of the desired ambient color</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_ambient_and_diffuse"
+              c:identifier="cogl_pipeline_set_ambient_and_diffuse"
+              version="2.0">
+        <doc xml:whitespace="preserve">Conveniently sets the diffuse and ambient color of @pipeline at the same
+time. See cogl_pipeline_set_ambient() and cogl_pipeline_set_diffuse().
+The default ambient color is (0.2, 0.2, 0.2, 1.0)
+The default diffuse color is (0.8, 0.8, 0.8, 1.0)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The components of the desired ambient and diffuse colors</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_blend"
+              c:identifier="cogl_pipeline_set_blend"
+              version="2.0"
+              throws="1">
+        <doc xml:whitespace="preserve">If not already familiar; please refer &lt;link linkend="cogl-Blend-Strings"&gt;here&lt;/link&gt;
+for an overview of what blend strings are, and their syntax.
+Blending occurs after the alpha test function, and combines fragments with
+the framebuffer.
+Currently the only blend function Cogl exposes is ADD(). So any valid
+blend statements will be of the form:
+|[
+&amp;lt;channel-mask&amp;gt;=ADD(SRC_COLOR*(&amp;lt;factor&amp;gt;), DST_COLOR*(&amp;lt;factor&amp;gt;))
+]|
+&lt;warning&gt;The brackets around blend factors are currently not
+optional!&lt;/warning&gt;
+This is the list of source-names usable as blend factors:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;SRC_COLOR: The color of the in comming fragment&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;DST_COLOR: The color of the framebuffer&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;CONSTANT: The constant set via cogl_pipeline_set_blend_constant()&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+The source names can be used according to the
+&lt;link linkend="cogl-Blend-String-syntax"&gt;color-source and factor syntax&lt;/link&gt;,
+so for example "(1-SRC_COLOR[A])" would be a valid factor, as would
+"(CONSTANT[RGB])"
+These can also be used as factors:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;0: (0, 0, 0, 0)&lt;/listitem&gt;
+&lt;listitem&gt;1: (1, 1, 1, 1)&lt;/listitem&gt;
+&lt;listitem&gt;SRC_ALPHA_SATURATE_FACTOR: (f,f,f,1) where f = MIN(SRC_COLOR[A],1-DST_COLOR[A])&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;note&gt;Remember; all color components are normalized to the range [0, 1]
+before computing the result of blending.&lt;/note&gt;
+&lt;example id="cogl-Blend-Strings-blend-unpremul"&gt;
+&lt;title&gt;Blend Strings/1&lt;/title&gt;
+&lt;para&gt;Blend a non-premultiplied source over a destination with
+premultiplied alpha:&lt;/para&gt;
+&lt;programlisting&gt;
+"RGB = ADD(SRC_COLOR*(SRC_COLOR[A]), DST_COLOR*(1-SRC_COLOR[A]))"
+"A   = ADD(SRC_COLOR, DST_COLOR*(1-SRC_COLOR[A]))"
+&lt;/programlisting&gt;
+&lt;/example&gt;
+&lt;example id="cogl-Blend-Strings-blend-premul"&gt;
+&lt;title&gt;Blend Strings/2&lt;/title&gt;
+&lt;para&gt;Blend a premultiplied source over a destination with
+premultiplied alpha&lt;/para&gt;
+&lt;programlisting&gt;
+"RGBA = ADD(SRC_COLOR, DST_COLOR*(1-SRC_COLOR[A]))"
+&lt;/programlisting&gt;
+&lt;/example&gt;
+The default blend string is:
+|[
+RGBA = ADD (SRC_COLOR, DST_COLOR*(1-SRC_COLOR[A]))
+]|
+That gives normal alpha-blending when the calculated color for the pipeline
+is in premultiplied form.
+described blending is supported by the underlying driver/hardware. If
+there was an error, %FALSE is returned and @error is set accordingly (if
+present).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the blend string was successfully parsed, and the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="blend_string" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A &lt;link linkend="cogl-Blend-Strings"&gt;Cogl blend string&lt;/link&gt; describing the desired blend function.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_blend_constant"
+              c:identifier="cogl_pipeline_set_blend_constant"
+              version="2.0">
+        <doc xml:whitespace="preserve">When blending is setup to reference a CONSTANT blend factor then
+blending will depend on the constant set with this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="constant_color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The constant color you want</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_color"
+              c:identifier="cogl_pipeline_set_color"
+              version="2.0">
+        <doc xml:whitespace="preserve">Sets the basic color of the pipeline, used when no lighting is enabled.
+Note that if you don't add any layers to the pipeline then the color
+will be blended unmodified with the destination; the default blend
+semi-transparent red. See cogl_color_premultiply().
+The default value is (1.0, 1.0, 1.0, 1.0)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The components of the color</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_color4f"
+              c:identifier="cogl_pipeline_set_color4f"
+              version="2.0">
+        <doc xml:whitespace="preserve">Sets the basic color of the pipeline, used when no lighting is enabled.
+The default value is (1.0, 1.0, 1.0, 1.0)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="red" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The red component</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="green" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The green component</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="blue" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The blue component</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The alpha component</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_color4ub"
+              c:identifier="cogl_pipeline_set_color4ub"
+              version="2.0">
+        <doc xml:whitespace="preserve">Sets the basic color of the pipeline, used when no lighting is enabled.
+The default value is (0xff, 0xff, 0xff, 0xff)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="red" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The red component</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="green" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The green component</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="blue" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The blue component</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="alpha" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The alpha component</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_diffuse"
+              c:identifier="cogl_pipeline_set_diffuse"
+              version="2.0">
+        <doc xml:whitespace="preserve">Sets the pipeline's diffuse color, in the standard OpenGL lighting
+model. The diffuse color is most intense where the light hits the
+surface directly - perpendicular to the surface.
+The default value is (0.8, 0.8, 0.8, 1.0)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="diffuse" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The components of the desired diffuse color</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_emission"
+              c:identifier="cogl_pipeline_set_emission"
+              version="2.0">
+        <doc xml:whitespace="preserve">Sets the pipeline's emissive color, in the standard OpenGL lighting
+model. It will look like the surface is a light source emitting this
+color.
+The default value is (0.0, 0.0, 0.0, 1.0)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="emission" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The components of the desired emissive color</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_layer_combine"
+              c:identifier="cogl_pipeline_set_layer_combine"
+              version="2.0"
+              throws="1">
+        <doc xml:whitespace="preserve">If not already familiar; you can refer
+&lt;link linkend="cogl-Blend-Strings"&gt;here&lt;/link&gt; for an overview of what blend
+strings are and there syntax.
+These are all the functions available for texture combining:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;REPLACE(arg0) = arg0&lt;/listitem&gt;
+&lt;listitem&gt;MODULATE(arg0, arg1) = arg0 x arg1&lt;/listitem&gt;
+&lt;listitem&gt;ADD(arg0, arg1) = arg0 + arg1&lt;/listitem&gt;
+&lt;listitem&gt;ADD_SIGNED(arg0, arg1) = arg0 + arg1 - 0.5&lt;/listitem&gt;
+&lt;listitem&gt;INTERPOLATE(arg0, arg1, arg2) = arg0 x arg2 + arg1 x (1 - arg2)&lt;/listitem&gt;
+&lt;listitem&gt;SUBTRACT(arg0, arg1) = arg0 - arg1&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;programlisting&gt;
+DOT3_RGB(arg0, arg1) = 4 x ((arg0[R] - 0.5)) * (arg1[R] - 0.5) +
+(arg0[G] - 0.5)) * (arg1[G] - 0.5) +
+(arg0[B] - 0.5)) * (arg1[B] - 0.5))
+&lt;/programlisting&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;programlisting&gt;
+DOT3_RGBA(arg0, arg1) = 4 x ((arg0[R] - 0.5)) * (arg1[R] - 0.5) +
+(arg0[G] - 0.5)) * (arg1[G] - 0.5) +
+(arg0[B] - 0.5)) * (arg1[B] - 0.5))
+&lt;/programlisting&gt;
+&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+Refer to the
+&lt;link linkend="cogl-Blend-String-syntax"&gt;color-source syntax&lt;/link&gt; for
+describing the arguments. The valid source names for texture combining
+are:
+&lt;variablelist&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;TEXTURE&lt;/term&gt;
+&lt;listitem&gt;Use the color from the current texture layer&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;TEXTURE_0, TEXTURE_1, etc&lt;/term&gt;
+&lt;listitem&gt;Use the color from the specified texture layer&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;CONSTANT&lt;/term&gt;
+&lt;listitem&gt;Use the color from the constant given with
+cogl_pipeline_set_layer_constant()&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;PRIMARY&lt;/term&gt;
+&lt;listitem&gt;Use the color of the pipeline as set with
+cogl_pipeline_set_color()&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;PREVIOUS&lt;/term&gt;
+&lt;listitem&gt;Either use the texture color from the previous layer, or
+if this is layer 0, use the color of the pipeline as set with
+cogl_pipeline_set_color()&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;/variablelist&gt;
+&lt;refsect2 id="cogl-Layer-Combine-Examples"&gt;
+&lt;title&gt;Layer Combine Examples&lt;/title&gt;
+&lt;para&gt;This is effectively what the default blending is:&lt;/para&gt;
+&lt;informalexample&gt;&lt;programlisting&gt;
+RGBA = MODULATE (PREVIOUS, TEXTURE)
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+&lt;para&gt;This could be used to cross-fade between two images, using
+the alpha component of a constant as the interpolator. The constant
+color is given by calling cogl_pipeline_set_layer_constant.&lt;/para&gt;
+&lt;informalexample&gt;&lt;programlisting&gt;
+RGBA = INTERPOLATE (PREVIOUS, TEXTURE, CONSTANT[A])
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+&lt;/refsect2&gt;
+&lt;note&gt;You can't give a multiplication factor for arguments as you can
+with blending.&lt;/note&gt;
+described texture combining is supported by the underlying driver and
+or hardware. On failure, %FALSE is returned and @error is set</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the blend string was successfully parsed, and the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Specifies the layer you want define a combine function for</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="blend_string" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A &lt;link linkend="cogl-Blend-Strings"&gt;Cogl blend string&lt;/link&gt; describing the desired texture combine function.</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_layer_combine_constant"
+              c:identifier="cogl_pipeline_set_layer_combine_constant"
+              version="2.0">
+        <doc xml:whitespace="preserve">When you are using the 'CONSTANT' color source in a layer combine
+description then you can use this function to define its value.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Specifies the layer you want to specify a constant used for texture combining</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="constant" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The constant color you want</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_layer_filters"
+              c:identifier="cogl_pipeline_set_layer_filters">
+        <doc xml:whitespace="preserve">Changes the decimation and interpolation filters used when a texture is
+drawn at other scales than 100%.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the layer number to change.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="min_filter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the filter used when scaling a texture down.</doc>
+            <type name="PipelineFilter" c:type="CoglPipelineFilter"/>
+          </parameter>
+          <parameter name="mag_filter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the filter used when magnifying a texture.</doc>
+            <type name="PipelineFilter" c:type="CoglPipelineFilter"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_layer_matrix"
+              c:identifier="cogl_pipeline_set_layer_matrix">
+        <doc xml:whitespace="preserve">This function lets you set a matrix that can be used to e.g. translate
+and rotate a single layer of a pipeline used to fill your geometry.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index for the layer inside @pipeline</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="matrix" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the transformation matrix for the layer</doc>
+            <type name="Matrix" c:type="CoglMatrix*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_layer_point_sprite_coords_enabled"
+              c:identifier="cogl_pipeline_set_layer_point_sprite_coords_enabled"
+              version="2.0"
+              throws="1">
+        <doc xml:whitespace="preserve">When rendering points, if @enable is %TRUE then the texture
+coordinates for this layer will be replaced with coordinates that
+vary from 0.0 to 1.0 across the primitive. The top left of the
+point will have the coordinates 0.0,0.0 and the bottom right will
+have 1.0,1.0. If @enable is %FALSE then the coordinates will be
+fixed for the entire point.
+This function will only work if %COGL_FEATURE_POINT_SPRITE is
+available. If the feature is not available then the function will
+return %FALSE and set @error.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the function succeeds, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the layer number to change.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="enable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to enable point sprite coord generation.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_layer_texture"
+              c:identifier="cogl_pipeline_set_layer_texture">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="texture" transfer-ownership="none">
+            <type name="Handle" c:type="CoglHandle"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_layer_wrap_mode"
+              c:identifier="cogl_pipeline_set_layer_wrap_mode"
+              version="2.0">
+        <doc xml:whitespace="preserve">Sets the wrap mode for all three coordinates of texture lookups on
+this layer. This is equivalent to calling
+cogl_pipeline_set_layer_wrap_mode_s(),
+cogl_pipeline_set_layer_wrap_mode_t() and
+cogl_pipeline_set_layer_wrap_mode_p() separately.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the layer number to change.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new wrap mode</doc>
+            <type name="PipelineWrapMode" c:type="CoglPipelineWrapMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_layer_wrap_mode_p"
+              c:identifier="cogl_pipeline_set_layer_wrap_mode_p"
+              version="2.0">
+        <doc xml:whitespace="preserve">Sets the wrap mode for the 'p' coordinate of texture lookups on
+this layer. 'p' is the third coordinate.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the layer number to change.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new wrap mode</doc>
+            <type name="PipelineWrapMode" c:type="CoglPipelineWrapMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_layer_wrap_mode_s"
+              c:identifier="cogl_pipeline_set_layer_wrap_mode_s"
+              version="2.0">
+        <doc xml:whitespace="preserve">Sets the wrap mode for the 's' coordinate of texture lookups on this layer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the layer number to change.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new wrap mode</doc>
+            <type name="PipelineWrapMode" c:type="CoglPipelineWrapMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_layer_wrap_mode_t"
+              c:identifier="cogl_pipeline_set_layer_wrap_mode_t"
+              version="2.0">
+        <doc xml:whitespace="preserve">Sets the wrap mode for the 't' coordinate of texture lookups on this layer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="layer_index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the layer number to change.</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new wrap mode</doc>
+            <type name="PipelineWrapMode" c:type="CoglPipelineWrapMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_shininess"
+              c:identifier="cogl_pipeline_set_shininess"
+              version="2.0">
+        <doc xml:whitespace="preserve">Sets the shininess of the pipeline, in the standard OpenGL lighting
+model, which determines the size of the specular highlights. A
+higher @shininess will produce smaller highlights which makes the
+object appear more shiny.
+The default value is 0.0</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="shininess" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The desired shininess; must be &gt;= 0.0</doc>
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_specular"
+              c:identifier="cogl_pipeline_set_specular"
+              version="2.0">
+        <doc xml:whitespace="preserve">Sets the pipeline's specular color, in the standard OpenGL lighting
+model. The intensity of the specular color depends on the viewport
+position, and is brightest along the lines of reflection.
+The default value is (0.0, 0.0, 0.0, 1.0)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="specular" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The components of the desired specular color</doc>
+            <type name="Color" c:type="CoglColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_user_program"
+              c:identifier="cogl_pipeline_set_user_program"
+              version="2.0">
+        <doc xml:whitespace="preserve">Associates a linked CoglProgram with the given pipeline so that the
+program can take full control of vertex and/or fragment processing.
+This is an example of how it can be used to associate an ARBfp
+program with a #CoglPipeline:
+|[
+CoglHandle shader;
+CoglHandle program;
+CoglPipeline *pipeline;
+shader = cogl_create_shader (COGL_SHADER_TYPE_FRAGMENT);
+cogl_shader_source (shader,
+"!!ARBfp1.0\n"
+"MOV result.color,fragment.color;\n"
+"END\n");
+cogl_shader_compile (shader);
+program = cogl_create_program ();
+cogl_program_attach_shader (program, shader);
+cogl_program_link (program);
+pipeline = cogl_pipeline_new ();
+cogl_pipeline_set_user_program (pipeline, program);
+cogl_set_source_color4ub (0xff, 0x00, 0x00, 0xff);
+cogl_rectangle (0, 0, 100, 100);
+]|
+It is possibly worth keeping in mind that this API is not part of
+the long term design for how we want to expose shaders to Cogl
+developers (We are planning on deprecating the cogl_program and
+cogl_shader APIs in favour of a "snippet" framework) but in the
+meantime we hope this will handle most practical GLSL and ARBfp
+requirements.
+Also remember you need to check for either the
+%COGL_FEATURE_SHADERS_GLSL or %COGL_FEATURE_SHADERS_ARBFP before
+using the cogl_program or cogl_shader API.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="program" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #CoglHandle to a linked CoglProgram</doc>
+            <type name="Handle" c:type="CoglHandle"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <enumeration name="PipelineAlphaFunc"
+                 glib:type-name="CoglPipelineAlphaFunc"
+                 glib:get-type="cogl_pipeline_alpha_func_get_type"
+                 c:type="CoglPipelineAlphaFunc">
+      <doc xml:whitespace="preserve">Alpha testing happens before blending primitives with the framebuffer and
+gives an opportunity to discard fragments based on a comparison with the
+incoming alpha value and a reference alpha value. The #CoglPipelineAlphaFunc
+determines how the comparison is done.</doc>
+      <member name="never"
+              value="512"
+              c:identifier="COGL_PIPELINE_ALPHA_FUNC_NEVER"
+              glib:nick="never"/>
+      <member name="less"
+              value="513"
+              c:identifier="COGL_PIPELINE_ALPHA_FUNC_LESS"
+              glib:nick="less"/>
+      <member name="equal"
+              value="514"
+              c:identifier="COGL_PIPELINE_ALPHA_FUNC_EQUAL"
+              glib:nick="equal"/>
+      <member name="lequal"
+              value="515"
+              c:identifier="COGL_PIPELINE_ALPHA_FUNC_LEQUAL"
+              glib:nick="lequal"/>
+      <member name="greater"
+              value="516"
+              c:identifier="COGL_PIPELINE_ALPHA_FUNC_GREATER"
+              glib:nick="greater"/>
+      <member name="notequal"
+              value="517"
+              c:identifier="COGL_PIPELINE_ALPHA_FUNC_NOTEQUAL"
+              glib:nick="notequal"/>
+      <member name="gequal"
+              value="518"
+              c:identifier="COGL_PIPELINE_ALPHA_FUNC_GEQUAL"
+              glib:nick="gequal"/>
+      <member name="always"
+              value="519"
+              c:identifier="COGL_PIPELINE_ALPHA_FUNC_ALWAYS"
+              glib:nick="always"/>
+    </enumeration>
+    <enumeration name="PipelineFilter"
+                 glib:type-name="CoglPipelineFilter"
+                 glib:get-type="cogl_pipeline_filter_get_type"
+                 c:type="CoglPipelineFilter">
+      <doc xml:whitespace="preserve">Texture filtering is used whenever the current pixel maps either to more
+than one texture element (texel) or less than one. These filter enums
+correspond to different strategies used to come up with a pixel color, by
+possibly referring to multiple neighbouring texels and taking a weighted
+average or simply using the nearest texel.</doc>
+      <member name="nearest"
+              value="9728"
+              c:identifier="COGL_PIPELINE_FILTER_NEAREST"
+              glib:nick="nearest"/>
+      <member name="linear"
+              value="9729"
+              c:identifier="COGL_PIPELINE_FILTER_LINEAR"
+              glib:nick="linear"/>
+      <member name="nearest_mipmap_nearest"
+              value="9984"
+              c:identifier="COGL_PIPELINE_FILTER_NEAREST_MIPMAP_NEAREST"
+              glib:nick="nearest-mipmap-nearest"/>
+      <member name="linear_mipmap_nearest"
+              value="9985"
+              c:identifier="COGL_PIPELINE_FILTER_LINEAR_MIPMAP_NEAREST"
+              glib:nick="linear-mipmap-nearest"/>
+      <member name="nearest_mipmap_linear"
+              value="9986"
+              c:identifier="COGL_PIPELINE_FILTER_NEAREST_MIPMAP_LINEAR"
+              glib:nick="nearest-mipmap-linear"/>
+      <member name="linear_mipmap_linear"
+              value="9987"
+              c:identifier="COGL_PIPELINE_FILTER_LINEAR_MIPMAP_LINEAR"
+              glib:nick="linear-mipmap-linear"/>
+    </enumeration>
+    <enumeration name="PipelineWrapMode"
+                 version="2.0"
+                 glib:type-name="CoglPipelineWrapMode"
+                 glib:get-type="cogl_pipeline_wrap_mode_get_type"
+                 c:type="CoglPipelineWrapMode">
+      <doc xml:whitespace="preserve">The wrap mode specifies what happens when texture coordinates
+outside the range 0→1 are used. Note that if the filter mode is
+anything but %COGL_PIPELINE_FILTER_NEAREST then texels outside the
+range 0→1 might be used even when the coordinate is exactly 0 or 1
+because OpenGL will try to sample neighbouring pixels. For example
+if you are trying to render the full texture then you may get
+artifacts around the edges when the pixels from the other side are
+merged in if the wrap mode is set to repeat.</doc>
+      <member name="repeat"
+              value="10497"
+              c:identifier="COGL_PIPELINE_WRAP_MODE_REPEAT"
+              glib:nick="repeat"/>
+      <member name="clamp_to_edge"
+              value="33071"
+              c:identifier="COGL_PIPELINE_WRAP_MODE_CLAMP_TO_EDGE"
+              glib:nick="clamp-to-edge"/>
+      <member name="automatic"
+              value="519"
+              c:identifier="COGL_PIPELINE_WRAP_MODE_AUTOMATIC"
+              glib:nick="automatic"/>
+    </enumeration>
+    <record name="PixelArray" c:type="CoglPixelArray" disguised="1">
+    </record>
+    <enumeration name="PixelFormat"
+                 version="0.8"
+                 glib:type-name="CoglPixelFormat"
+                 glib:get-type="cogl_pixel_format_get_type"
+                 c:type="CoglPixelFormat">
+      <doc xml:whitespace="preserve">Pixel formats used by COGL. For the formats with a byte per
+component, the order of the components specify the order in
+increasing memory addresses. So for example
+%COGL_PIXEL_FORMAT_RGB_888 would have the red component in the
+lowest address, green in the next address and blue after that
+regardless of the endinanness of the system.
+For the 16-bit formats the component order specifies the order
+within a 16-bit number from most significant bit to least
+significant. So for %COGL_PIXEL_FORMAT_RGB_565, the red component
+would be in bits 11-15, the green component would be in 6-11 and
+the blue component would be in 1-5. Therefore the order in memory
+depends on the endianness of the system.
+When uploading a texture %COGL_PIXEL_FORMAT_ANY can be used as the
+internal format. Cogl will try to pick the best format to use
+internally and convert the texture data if necessary.</doc>
+      <member name="any"
+              value="0"
+              c:identifier="COGL_PIXEL_FORMAT_ANY"
+              glib:nick="any"/>
+      <member name="a_8"
+              value="17"
+              c:identifier="COGL_PIXEL_FORMAT_A_8"
+              glib:nick="a-8"/>
+      <member name="rgb_565"
+              value="4"
+              c:identifier="COGL_PIXEL_FORMAT_RGB_565"
+              glib:nick="rgb-565"/>
+      <member name="rgba_4444"
+              value="21"
+              c:identifier="COGL_PIXEL_FORMAT_RGBA_4444"
+              glib:nick="rgba-4444"/>
+      <member name="rgba_5551"
+              value="22"
+              c:identifier="COGL_PIXEL_FORMAT_RGBA_5551"
+              glib:nick="rgba-5551"/>
+      <member name="yuv"
+              value="7"
+              c:identifier="COGL_PIXEL_FORMAT_YUV"
+              glib:nick="yuv"/>
+      <member name="g_8"
+              value="8"
+              c:identifier="COGL_PIXEL_FORMAT_G_8"
+              glib:nick="g-8"/>
+      <member name="rgb_888"
+              value="2"
+              c:identifier="COGL_PIXEL_FORMAT_RGB_888"
+              glib:nick="rgb-888"/>
+      <member name="bgr_888"
+              value="34"
+              c:identifier="COGL_PIXEL_FORMAT_BGR_888"
+              glib:nick="bgr-888"/>
+      <member name="rgba_8888"
+              value="19"
+              c:identifier="COGL_PIXEL_FORMAT_RGBA_8888"
+              glib:nick="rgba-8888"/>
+      <member name="bgra_8888"
+              value="51"
+              c:identifier="COGL_PIXEL_FORMAT_BGRA_8888"
+              glib:nick="bgra-8888"/>
+      <member name="argb_8888"
+              value="83"
+              c:identifier="COGL_PIXEL_FORMAT_ARGB_8888"
+              glib:nick="argb-8888"/>
+      <member name="abgr_8888"
+              value="115"
+              c:identifier="COGL_PIXEL_FORMAT_ABGR_8888"
+              glib:nick="abgr-8888"/>
+      <member name="rgba_8888_pre"
+              value="147"
+              c:identifier="COGL_PIXEL_FORMAT_RGBA_8888_PRE"
+              glib:nick="rgba-8888-pre"/>
+      <member name="bgra_8888_pre"
+              value="179"
+              c:identifier="COGL_PIXEL_FORMAT_BGRA_8888_PRE"
+              glib:nick="bgra-8888-pre"/>
+      <member name="argb_8888_pre"
+              value="211"
+              c:identifier="COGL_PIXEL_FORMAT_ARGB_8888_PRE"
+              glib:nick="argb-8888-pre"/>
+      <member name="abgr_8888_pre"
+              value="243"
+              c:identifier="COGL_PIXEL_FORMAT_ABGR_8888_PRE"
+              glib:nick="abgr-8888-pre"/>
+      <member name="rgba_4444_pre"
+              value="149"
+              c:identifier="COGL_PIXEL_FORMAT_RGBA_4444_PRE"
+              glib:nick="rgba-4444-pre"/>
+      <member name="rgba_5551_pre"
+              value="150"
+              c:identifier="COGL_PIXEL_FORMAT_RGBA_5551_PRE"
+              glib:nick="rgba-5551-pre"/>
+    </enumeration>
+    <record name="Primitive" c:type="CoglPrimitive" disguised="1">
+      <method name="draw" c:identifier="cogl_primitive_draw" version="1.6">
+        <doc xml:whitespace="preserve">Draw the given @primitive with the current source material.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_first_vertex"
+              c:identifier="cogl_primitive_get_first_vertex">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_mode" c:identifier="cogl_primitive_get_mode">
+        <return-value transfer-ownership="none">
+          <type name="VerticesMode" c:type="CoglVerticesMode"/>
+        </return-value>
+      </method>
+      <method name="get_n_vertices"
+              c:identifier="cogl_primitive_get_n_vertices">
+        <return-value transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="set_attributes"
+              c:identifier="cogl_primitive_set_attributes"
+              version="1.6">
+        <doc xml:whitespace="preserve">Replaces all the attributes of the given #CoglPrimitive object.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A %NULL terminated array of #CoglAttribute pointers</doc>
+            <type name="Attribute" c:type="CoglAttribute**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_first_vertex"
+              c:identifier="cogl_primitive_set_first_vertex">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_vertex" transfer-ownership="none">
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_indices" c:identifier="cogl_primitive_set_indices">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="indices" transfer-ownership="none">
+            <type name="Indices" c:type="CoglIndices*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_mode" c:identifier="cogl_primitive_set_mode">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="VerticesMode" c:type="CoglVerticesMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_n_vertices"
+              c:identifier="cogl_primitive_set_n_vertices">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_vertices" transfer-ownership="none">
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <constant name="RADIANS_TO_DEGREES" value="3754936">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <bitfield name="ReadPixelsFlags"
+              version="1.0"
+              glib:type-name="CoglReadPixelsFlags"
+              glib:get-type="cogl_read_pixels_flags_get_type"
+              c:type="CoglReadPixelsFlags">
+      <doc xml:whitespace="preserve">Flags for cogl_read_pixels()</doc>
+      <member name="color_buffer"
+              value="1"
+              c:identifier="COGL_READ_PIXELS_COLOR_BUFFER"
+              glib:nick="color-buffer"/>
+    </bitfield>
+    <constant name="SQRTI_ARG_10_PERCENT" value="5590">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="SQRTI_ARG_5_PERCENT" value="210">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="SQRTI_ARG_MAX" value="4194303">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <enumeration name="ShaderType"
+                 version="1.0"
+                 glib:type-name="CoglShaderType"
+                 glib:get-type="cogl_shader_type_get_type"
+                 c:type="CoglShaderType">
+      <doc xml:whitespace="preserve">Types of shaders</doc>
+      <member name="vertex"
+              value="0"
+              c:identifier="COGL_SHADER_TYPE_VERTEX"
+              glib:nick="vertex"/>
+      <member name="fragment"
+              value="1"
+              c:identifier="COGL_SHADER_TYPE_FRAGMENT"
+              glib:nick="fragment"/>
+    </enumeration>
+    <constant name="TEXTURE_MAX_WASTE" value="127">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <bitfield name="TextureFlags"
+              version="1.0"
+              glib:type-name="CoglTextureFlags"
+              glib:get-type="cogl_texture_flags_get_type"
+              c:type="CoglTextureFlags">
+      <doc xml:whitespace="preserve">Flags to pass to the cogl_texture_new_* family of functions.</doc>
+      <member name="none"
+              value="0"
+              c:identifier="COGL_TEXTURE_NONE"
+              glib:nick="none"/>
+      <member name="no_auto_mipmap"
+              value="1"
+              c:identifier="COGL_TEXTURE_NO_AUTO_MIPMAP"
+              glib:nick="no-auto-mipmap"/>
+      <member name="no_slicing"
+              value="2"
+              c:identifier="COGL_TEXTURE_NO_SLICING"
+              glib:nick="no-slicing"/>
+      <member name="no_atlas"
+              value="4"
+              c:identifier="COGL_TEXTURE_NO_ATLAS"
+              glib:nick="no-atlas"/>
+    </bitfield>
+    <record name="TextureVertex" c:type="CoglTextureVertex">
+      <doc xml:whitespace="preserve">Used to specify vertex information when calling cogl_polygon()</doc>
+      <field name="x" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="z" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="tx" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="ty" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="color" writable="1">
+        <type name="Color" c:type="CoglColor"/>
+      </field>
+    </record>
+    <constant name="UNORDERED_MASK" value="15">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="UNPREMULT_MASK" value="127">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <callback name="UserDataDestroyCallback"
+              c:type="CoglUserDataDestroyCallback"
+              version="1.4">
+      <doc xml:whitespace="preserve">When associating private data with a #CoglObject a callback can be
+given which will be called either if the object is destroyed or if
+cogl_object_set_user_data() is called with NULL user_data for the
+same key.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="user_data" transfer-ownership="none" closure="0">
+          <doc xml:whitespace="preserve">The data whos association with a #CoglObject has been destoyed.</doc>
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="UserDataKey" c:type="CoglUserDataKey" version="1.4">
+      <doc xml:whitespace="preserve">A #CoglUserDataKey is used to declare a key for attaching data to a
+#CoglObject using cogl_object_set_user_data. The typedef only exists as a
+formality to make code self documenting since only the unique address of a
+#CoglUserDataKey is used.
+Typically you would declare a static #CoglUserDataKey and set private data
+on an object something like this:
+|[
+static CoglUserDataKey path_private_key;
+static void
+destroy_path_private_cb (void *data)
+{
+g_free (data);
+}
+static void
+my_path_set_data (CoglPath *path, void *data)
+{
+cogl_object_set_user_data (COGL_OBJECT (path),
+&amp;private_key,
+data,
+destroy_path_private_cb);
+}
+]|</doc>
+      <field name="unused" writable="1">
+        <type name="gint" c:type="int"/>
+      </field>
+    </record>
+    <record name="Vector3" c:type="CoglVector3">
+      <field name="x" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="z" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <method name="add_EXP" c:identifier="cogl_vector3_add_EXP">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="a" transfer-ownership="none">
+            <type name="Vector3" c:type="CoglVector3*"/>
+          </parameter>
+          <parameter name="b" transfer-ownership="none">
+            <type name="Vector3" c:type="CoglVector3*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy_EXP"
+              c:identifier="cogl_vector3_copy_EXP"
+              introspectable="0">
+        <return-value>
+          <type name="Vector3" c:type="CoglVector3*"/>
+        </return-value>
+      </method>
+      <method name="cross_product_EXP"
+              c:identifier="cogl_vector3_cross_product_EXP">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="u" transfer-ownership="none">
+            <type name="Vector3" c:type="CoglVector3*"/>
+          </parameter>
+          <parameter name="v" transfer-ownership="none">
+            <type name="Vector3" c:type="CoglVector3*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="distance_EXP" c:identifier="cogl_vector3_distance_EXP">
+        <return-value transfer-ownership="none">
+          <type name="gfloat" c:type="float"/>
+        </return-value>
+        <parameters>
+          <parameter name="b" transfer-ownership="none">
+            <type name="Vector3" c:type="CoglVector3*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="divide_scalar_EXP"
+              c:identifier="cogl_vector3_divide_scalar_EXP">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="scalar" transfer-ownership="none">
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dot_product_EXP"
+              c:identifier="cogl_vector3_dot_product_EXP">
+        <return-value transfer-ownership="none">
+          <type name="gfloat" c:type="float"/>
+        </return-value>
+        <parameters>
+          <parameter name="b" transfer-ownership="none">
+            <type name="Vector3" c:type="CoglVector3*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="equal_with_epsilon_EXP"
+              c:identifier="cogl_vector3_equal_with_epsilon_EXP">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="vector1" transfer-ownership="none">
+            <type name="Vector3" c:type="CoglVector3*"/>
+          </parameter>
+          <parameter name="epsilon" transfer-ownership="none">
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free_EXP" c:identifier="cogl_vector3_free_EXP">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="init_EXP" c:identifier="cogl_vector3_init_EXP">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+          <parameter name="z" transfer-ownership="none">
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="init_zero_EXP" c:identifier="cogl_vector3_init_zero_EXP">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="invert_EXP" c:identifier="cogl_vector3_invert_EXP">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="magnitude_EXP" c:identifier="cogl_vector3_magnitude_EXP">
+        <return-value transfer-ownership="none">
+          <type name="gfloat" c:type="float"/>
+        </return-value>
+      </method>
+      <method name="multiply_scalar_EXP"
+              c:identifier="cogl_vector3_multiply_scalar_EXP">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="scalar" transfer-ownership="none">
+            <type name="gfloat" c:type="float"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="normalize_EXP" c:identifier="cogl_vector3_normalize_EXP">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="subtract_EXP" c:identifier="cogl_vector3_subtract_EXP">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="a" transfer-ownership="none">
+            <type name="Vector3" c:type="CoglVector3*"/>
+          </parameter>
+          <parameter name="b" transfer-ownership="none">
+            <type name="Vector3" c:type="CoglVector3*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="VertexArray" c:type="CoglVertexArray" disguised="1">
+    </record>
+    <record name="VertexP2" c:type="CoglVertexP2" version="1.6">
+      <doc xml:whitespace="preserve">A convenience vertex definition that can be used with
+cogl_primitive_new_with_v2_attributes().</doc>
+      <field name="x" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+    </record>
+    <record name="VertexP2C4" c:type="CoglVertexP2C4" version="1.6">
+      <doc xml:whitespace="preserve">A convenience vertex definition that can be used with
+cogl_primitive_new_with_v2c4_attributes().</doc>
+      <field name="x" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="r" writable="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+      <field name="g" writable="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+      <field name="b" writable="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+      <field name="a" writable="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+    </record>
+    <record name="VertexP2T2" c:type="CoglVertexP2T2" version="1.6">
+      <doc xml:whitespace="preserve">A convenience vertex definition that can be used with
+cogl_primitive_new_with_v2t2_attributes().</doc>
+      <field name="x" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="s" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="t" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+    </record>
+    <record name="VertexP2T2C4" c:type="CoglVertexP2T2C4" version="1.6">
+      <doc xml:whitespace="preserve">A convenience vertex definition that can be used with
+cogl_primitive_new_with_v3t2c4_attributes().</doc>
+      <field name="x" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="s" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="t" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="r" writable="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+      <field name="g" writable="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+      <field name="b" writable="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+      <field name="a" writable="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+    </record>
+    <record name="VertexP3" c:type="CoglVertexP3" version="1.6">
+      <doc xml:whitespace="preserve">A convenience vertex definition that can be used with
+cogl_primitive_new_with_v3_attributes().</doc>
+      <field name="x" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="z" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+    </record>
+    <record name="VertexP3C4" c:type="CoglVertexP3C4" version="1.6">
+      <doc xml:whitespace="preserve">A convenience vertex definition that can be used with
+cogl_primitive_new_with_v3c4_attributes().</doc>
+      <field name="x" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="z" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="r" writable="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+      <field name="g" writable="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+      <field name="b" writable="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+      <field name="a" writable="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+    </record>
+    <record name="VertexP3T2" c:type="CoglVertexP3T2" version="1.6">
+      <doc xml:whitespace="preserve">A convenience vertex definition that can be used with
+cogl_primitive_new_with_v3t2_attributes().</doc>
+      <field name="x" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="z" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="s" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="t" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+    </record>
+    <record name="VertexP3T2C4" c:type="CoglVertexP3T2C4" version="1.6">
+      <doc xml:whitespace="preserve">A convenience vertex definition that can be used with
+cogl_primitive_new_with_v3t2c4_attributes().</doc>
+      <field name="x" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="z" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="s" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="t" writable="1">
+        <type name="gfloat" c:type="float"/>
+      </field>
+      <field name="r" writable="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+      <field name="g" writable="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+      <field name="b" writable="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+      <field name="a" writable="1">
+        <type name="guint8" c:type="guint8"/>
+      </field>
+    </record>
+    <enumeration name="VerticesMode"
+                 version="1.0"
+                 glib:type-name="CoglVerticesMode"
+                 glib:get-type="cogl_vertices_mode_get_type"
+                 c:type="CoglVerticesMode">
+      <doc xml:whitespace="preserve">Different ways of interpreting vertices when drawing.</doc>
+      <member name="points"
+              value="0"
+              c:identifier="COGL_VERTICES_MODE_POINTS"
+              glib:nick="points"/>
+      <member name="lines"
+              value="1"
+              c:identifier="COGL_VERTICES_MODE_LINES"
+              glib:nick="lines"/>
+      <member name="line_loop"
+              value="2"
+              c:identifier="COGL_VERTICES_MODE_LINE_LOOP"
+              glib:nick="line-loop"/>
+      <member name="line_strip"
+              value="3"
+              c:identifier="COGL_VERTICES_MODE_LINE_STRIP"
+              glib:nick="line-strip"/>
+      <member name="triangles"
+              value="4"
+              c:identifier="COGL_VERTICES_MODE_TRIANGLES"
+              glib:nick="triangles"/>
+      <member name="triangle_strip"
+              value="5"
+              c:identifier="COGL_VERTICES_MODE_TRIANGLE_STRIP"
+              glib:nick="triangle-strip"/>
+      <member name="triangle_fan"
+              value="6"
+              c:identifier="COGL_VERTICES_MODE_TRIANGLE_FAN"
+              glib:nick="triangle-fan"/>
+    </enumeration>
+    <function name="angle_cos" c:identifier="cogl_angle_cos" version="1.0">
+      <doc xml:whitespace="preserve">Computes the cosine of @angle</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the cosine of the passed angle</doc>
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="angle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an angle expressed using #CoglAngle</doc>
+          <type name="Angle" c:type="CoglAngle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="angle_sin" c:identifier="cogl_angle_sin" version="1.0">
+      <doc xml:whitespace="preserve">Computes the sine of @angle</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the sine of the passed angle</doc>
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="angle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an angle expressed using #CoglAngle</doc>
+          <type name="Angle" c:type="CoglAngle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="angle_tan" c:identifier="cogl_angle_tan" version="1.0">
+      <doc xml:whitespace="preserve">Computes the tangent of @angle</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the tangent of the passed angle</doc>
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="angle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an angle expressed using #CoglAngle</doc>
+          <type name="Angle" c:type="CoglAngle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attribute_new"
+              c:identifier="cogl_attribute_new"
+              version="1.4"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Describes the layout for a list of vertex attribute values (For
+example, a list of texture coordinates or colors).
+The @name is used to access the attribute inside a GLSL vertex
+shader and there are some special names you should use if they are
+applicable:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;"cogl_position_in" (used for vertex positions)&lt;/listitem&gt;
+&lt;listitem&gt;"cogl_color_in" (used for vertex colors)&lt;/listitem&gt;
+&lt;listitem&gt;"cogl_tex_coord0_in", "cogl_tex_coord1", ...
+(used for vertex texture coordinates)&lt;/listitem&gt;
+&lt;listitem&gt;"cogl_normal_in" (used for vertex normals)&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+The attribute values corresponding to different vertices can either
+be tightly packed or interleaved with other attribute values. For
+example it's common to define a structure for a single vertex like:
+|[
+typedef struct
+{
+float x, y, z; /&lt;!-- --&gt;* position attribute *&lt;!-- --&gt;/
+float s, t; /&lt;!-- --&gt;* texture coordinate attribute *&lt;!-- --&gt;/
+} MyVertex;
+]|
+And then create an array of vertex data something like:
+|[
+MyVertex vertices[100] = { .... }
+]|
+In this case, to describe either the position or texture coordinate
+attribute you have to move &lt;pre&gt;sizeof (MyVertex)&lt;/pre&gt; bytes to
+move from one vertex to the next.  This is called the attribute
+a packed array of float x, y pairs then the attribute stride would
+be &lt;pre&gt;(2 * sizeof (float))&lt;/pre&gt;. So the @stride is the number of
+bytes to move to find the attribute value of the next vertex.
+Normally a list of attributes starts at the beginning of an array.
+So for the &lt;pre&gt;MyVertex&lt;/pre&gt; example above the @offset is the
+offset inside the &lt;pre&gt;MyVertex&lt;/pre&gt; structure to the first
+component of the attribute. For the texture coordinate attribute
+the offset would be &lt;pre&gt;offsetof (MyVertex, s)&lt;/pre&gt; or instead of
+using the offsetof macro you could use &lt;pre&gt;sizeof (float) * 3&lt;/pre&gt;.
+If you've divided your @array into blocks of non-interleved
+attributes then you will need to calculate the @offset as the
+number of bytes in blocks preceding the attribute you're
+describing.
+An attribute often has more than one component. For example a color
+is often comprised of 4 red, green, blue and alpha @components, and a
+position may be comprised of 2 x and y @components. You should aim
+to keep the number of components to a minimum as more components
+means more data needs to be mapped into the GPU which can be a
+bottlneck when dealing with a large number of vertices.
+Finally you need to specify the component data type. Here you
+should aim to use the smallest type that meets your precision
+requirements. Again the larger the type then more data needs to be
+mapped into the GPU which can be a bottlneck when dealing with
+a large number of vertices.
+layout for a list of attribute values stored in @array.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">A newly allocated #CoglAttribute describing the</doc>
+        <type name="Attribute" c:type="CoglAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #CoglVertexArray containing the actual attribute data</doc>
+          <type name="VertexArray" c:type="CoglVertexArray*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The name of the attribute (used to reference it from GLSL)</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="stride" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of bytes to jump to get to the next attribute value for the next vertex. (Usually &lt;pre&gt;sizeof (MyVertex)&lt;/pre&gt;)</doc>
+          <type name="gsize" c:type="gsize"/>
+        </parameter>
+        <parameter name="offset" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The byte offset from the start of @array for the first attribute value. (Usually &lt;pre&gt;offsetof (MyVertex, component0)&lt;/pre&gt;</doc>
+          <type name="gsize" c:type="gsize"/>
+        </parameter>
+        <parameter name="components" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of components (e.g. 4 for an rgba color or 3 for and (x,y,z) position)</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">FIXME</doc>
+          <type name="AttributeType" c:type="CoglAttributeType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="begin_gl" c:identifier="cogl_begin_gl" version="1.0">
+      <doc xml:whitespace="preserve">We do not advise nor reliably support the interleaving of raw GL drawing and
+Cogl drawing functions, but if you insist, cogl_begin_gl() and cogl_end_gl()
+provide a simple mechanism that may at least give you a fighting chance of
+succeeding.
+through the modification of GL state; that will never be reliably supported,
+but if you are trying to do something like:
+|[
+{
+- setup some OpenGL state.
+- draw using OpenGL (e.g. glDrawArrays() )
+- reset modified OpenGL state.
+- continue using Cogl to draw
+}
+]|
+You should surround blocks of drawing using raw GL with cogl_begin_gl()
+and cogl_end_gl():
+|[
+{
+cogl_begin_gl ();
+- setup some OpenGL state.
+- draw using OpenGL (e.g. glDrawArrays() )
+- reset modified OpenGL state.
+cogl_end_gl ();
+- continue using Cogl to draw
+}
+]|
+Don't ever try and do:
+|[
+{
+- setup some OpenGL state.
+- use Cogl to draw
+- reset modified OpenGL state.
+}
+]|
+When the internals of Cogl evolves, this is very liable to break.
+This function will flush all batched primitives, and subsequently flush
+all internal Cogl state to OpenGL as if it were going to draw something
+itself.
+The result is that the OpenGL modelview matrix will be setup; the state
+corresponding to the current source material will be set up and other world
+state such as backface culling, depth and fogging enabledness will be sent
+to OpenGL.
+&lt;note&gt;No special material state is flushed, so if you want Cogl to setup a
+simplified material state it is your responsibility to set a simple source
+material before calling cogl_begin_gl(). E.g. by calling
+cogl_set_source_color4ub().&lt;/note&gt;
+&lt;note&gt;It is your responsibility to restore any OpenGL state that you modify
+to how it was after calling cogl_begin_gl() if you don't do this then the
+result of further Cogl calls is undefined.&lt;/note&gt;
+&lt;note&gt;You can not nest begin/end blocks.&lt;/note&gt;
+Again we would like to stress, we do not advise the use of this API and if
+possible we would prefer to improve Cogl than have developers require raw
+OpenGL.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="bitmap_error_quark" c:identifier="cogl_bitmap_error_quark">
+      <return-value transfer-ownership="none">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="bitmap_get_size_from_file"
+              c:identifier="cogl_bitmap_get_size_from_file"
+              version="1.0">
+      <doc xml:whitespace="preserve">Parses an image file enough to extract the width and height
+of the bitmap.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the image was successfully parsed</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="filename" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the file to check</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="width"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">return location for the bitmap width, or %NULL</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+        <parameter name="height"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">return location for the bitmap height, or %NULL</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bitmap_new_from_file"
+              c:identifier="cogl_bitmap_new_from_file"
+              version="1.0"
+              introspectable="0"
+              throws="1">
+      <doc xml:whitespace="preserve">Loads an image file from disk. This function can be safely called from
+within a thread.
+%NULL if loading the image failed.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a #CoglBitmap to the new loaded image data, or</doc>
+        <type name="Bitmap" c:type="CoglBitmap*"/>
+      </return-value>
+      <parameters>
+        <parameter name="filename" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the file to load.</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="blend_string_error_quark"
+              c:identifier="cogl_blend_string_error_quark">
+      <return-value transfer-ownership="none">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="check_extension"
+              c:identifier="cogl_check_extension"
+              deprecated="OpenGL is an implementation detail for Cogl and so it&apos;s"
+              deprecated-version="1.2">
+      <doc xml:whitespace="preserve">Check whether @name occurs in list of extensions in @ext.
+not appropriate to expose OpenGL extensions through the Cogl API. This
+function can be replaced by the following equivalent code:
+|[
+]|</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the extension occurs in the list, %FALSE otherwise.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">extension to check for</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="ext" transfer-ownership="none">
+          <doc xml:whitespace="preserve">list of extensions</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="clear" c:identifier="cogl_clear">
+      <doc xml:whitespace="preserve">Clears all the auxiliary buffers identified in the @buffers mask, and if
+that includes the color buffer then the specified @color is used.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="color" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Background color to clear to</doc>
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+        <parameter name="buffers" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A mask of #CoglBufferBit&lt;!-- --&gt;'s identifying which auxiliary buffers to clear</doc>
+          <type name="gulong" c:type="unsigned long"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="clip_ensure"
+              c:identifier="cogl_clip_ensure"
+              version="1.0"
+              deprecated="Calling this function has no effect"
+              deprecated-version="1.2">
+      <doc xml:whitespace="preserve">Ensures that the current clipping region has been set in GL. This
+will automatically be called before any Cogl primitives but it
+maybe be neccessary to call if you are using raw GL calls with
+clipping.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="clip_pop" c:identifier="cogl_clip_pop">
+      <doc xml:whitespace="preserve">Reverts the clipping region to the state before the last call to
+cogl_clip_push().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="clip_push"
+              c:identifier="cogl_clip_push"
+              deprecated="The x, y, width, height arguments are inconsistent"
+              deprecated-version="1.2">
+      <doc xml:whitespace="preserve">Specifies a rectangular clipping area for all subsequent drawing
+operations. Any drawing commands that extend outside the rectangle
+will be clipped so that only the portion inside the rectangle will
+be displayed. The rectangle dimensions are transformed by the
+current model-view matrix.
+The rectangle is intersected with the current clip region. To undo
+the effect of this function, call cogl_clip_pop().
+with other API that specify rectangles in model space, and when used
+with a coordinate space that puts the origin at the center and y+
+extending up, it's awkward to use. Please use cogl_clip_push_rectangle()
+instead</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x_offset" transfer-ownership="none">
+          <doc xml:whitespace="preserve">left edge of the clip rectangle</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y_offset" transfer-ownership="none">
+          <doc xml:whitespace="preserve">top edge of the clip rectangle</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">width of the clip rectangle</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">height of the clip rectangle</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="clip_push_from_path"
+              c:identifier="cogl_clip_push_from_path"
+              version="1.0">
+      <doc xml:whitespace="preserve">Sets a new clipping area using the current path. The current path
+is then cleared. The clipping area is intersected with the previous
+clipping area. To restore the previous clipping area, call
+cogl_clip_pop().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="clip_push_from_path_preserve"
+              c:identifier="cogl_clip_push_from_path_preserve"
+              version="1.0">
+      <doc xml:whitespace="preserve">Sets a new clipping area using the current path. The current path
+is then cleared. The clipping area is intersected with the previous
+clipping area. To restore the previous clipping area, call
+cogl_clip_pop().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="clip_push_rectangle"
+              c:identifier="cogl_clip_push_rectangle"
+              version="1.2">
+      <doc xml:whitespace="preserve">Specifies a rectangular clipping area for all subsequent drawing
+operations. Any drawing commands that extend outside the rectangle
+will be clipped so that only the portion inside the rectangle will
+be displayed. The rectangle dimensions are transformed by the
+current model-view matrix.
+The rectangle is intersected with the current clip region. To undo
+the effect of this function, call cogl_clip_pop().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x0" transfer-ownership="none">
+          <doc xml:whitespace="preserve">x coordinate for top left corner of the clip rectangle</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y0" transfer-ownership="none">
+          <doc xml:whitespace="preserve">y coordinate for top left corner of the clip rectangle</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="x1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">x coordinate for bottom right corner of the clip rectangle</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">y coordinate for bottom right corner of the clip rectangle</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="clip_push_window_rect"
+              c:identifier="cogl_clip_push_window_rect"
+              deprecated="Use cogl_clip_push_window_rectangle() instead"
+              deprecated-version="1.2">
+      <doc xml:whitespace="preserve">Specifies a rectangular clipping area for all subsequent drawing
+operations. Any drawing commands that extend outside the rectangle
+will be clipped so that only the portion inside the rectangle will
+be displayed. The rectangle dimensions are not transformed by the
+current model-view matrix.
+The rectangle is intersected with the current clip region. To undo
+the effect of this function, call cogl_clip_pop().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x_offset" transfer-ownership="none">
+          <doc xml:whitespace="preserve">left edge of the clip rectangle in window coordinates</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y_offset" transfer-ownership="none">
+          <doc xml:whitespace="preserve">top edge of the clip rectangle in window coordinates</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">width of the clip rectangle</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">height of the clip rectangle</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="clip_push_window_rectangle"
+              c:identifier="cogl_clip_push_window_rectangle"
+              version="1.2">
+      <doc xml:whitespace="preserve">Specifies a rectangular clipping area for all subsequent drawing
+operations. Any drawing commands that extend outside the rectangle
+will be clipped so that only the portion inside the rectangle will
+be displayed. The rectangle dimensions are not transformed by the
+current model-view matrix.
+The rectangle is intersected with the current clip region. To undo
+the effect of this function, call cogl_clip_pop().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x_offset" transfer-ownership="none">
+          <doc xml:whitespace="preserve">left edge of the clip rectangle in window coordinates</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="y_offset" transfer-ownership="none">
+          <doc xml:whitespace="preserve">top edge of the clip rectangle in window coordinates</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">width of the clip rectangle</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">height of the clip rectangle</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="clip_stack_restore"
+              c:identifier="cogl_clip_stack_restore"
+              version="0.8.2"
+              deprecated="This was originally added to allow us to restore"
+              deprecated-version="1.2">
+      <doc xml:whitespace="preserve">Restore the state of the clipping stack that was previously saved
+by cogl_clip_stack_save().
+the clip stack when switching back from an offscreen framebuffer,
+but it's not necessary anymore given that framebuffers now own
+separate clip stacks which will be automatically switched between
+when a new buffer is set. Calling this function has no effect</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="clip_stack_save"
+              c:identifier="cogl_clip_stack_save"
+              version="0.8.2"
+              deprecated="This was originally added to allow us to save the"
+              deprecated-version="1.2">
+      <doc xml:whitespace="preserve">Save the entire state of the clipping stack and then clear all
+clipping. The previous state can be returned to with
+cogl_clip_stack_restore(). Each call to cogl_clip_push() after this
+must be matched by a call to cogl_clip_pop() before calling
+cogl_clip_stack_restore().
+clip stack when switching to an offscreen framebuffer, but it's
+not necessary anymore given that framebuffers now own separate
+clip stacks which will be automatically switched between when a
+new buffer is set. Calling this function has no effect</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="color_equal" c:identifier="cogl_color_equal" version="1.0">
+      <doc xml:whitespace="preserve">Compares two #CoglColor&lt;!-- --&gt;s and checks if they are the same.
+This function can be passed to g_hash_table_new() as the @key_equal_func
+parameter, when using #CoglColor&lt;!-- --&gt;s as keys in a #GHashTable.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the two colors are the same.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="v1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglColor</doc>
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="v2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglColor</doc>
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="color_new"
+              c:identifier="cogl_color_new"
+              version="1.0"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new (empty) color
+to free the allocated resources</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a newly-allocated #CoglColor. Use cogl_color_free()</doc>
+        <type name="Color" c:type="CoglColor*"/>
+      </return-value>
+    </function>
+    <function name="create_program"
+              c:identifier="cogl_create_program"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new cogl program object that can be used to replace parts of the GL
+rendering pipeline with custom code.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a new cogl program.</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+    </function>
+    <function name="create_shader"
+              c:identifier="cogl_create_shader"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new shader handle, use #cogl_shader_source to set the source code
+to be used on it.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a new shader handle.</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="shader_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">COGL_SHADER_TYPE_VERTEX or COGL_SHADER_TYPE_FRAGMENT.</doc>
+          <type name="ShaderType" c:type="CoglShaderType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="disable_fog" c:identifier="cogl_disable_fog">
+      <doc xml:whitespace="preserve">This function disables fogging, so primitives drawn afterwards will not be
+blended with any previously set fog color.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="double_to_fixed" c:identifier="cogl_double_to_fixed">
+      <return-value transfer-ownership="none">
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="gdouble" c:type="double"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="double_to_int" c:identifier="cogl_double_to_int">
+      <return-value transfer-ownership="none">
+        <type name="gint" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="gdouble" c:type="double"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="double_to_uint" c:identifier="cogl_double_to_uint">
+      <return-value transfer-ownership="none">
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="gdouble" c:type="double"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_attributes"
+              c:identifier="cogl_draw_attributes"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="VerticesMode" c:type="CoglVerticesMode"/>
+        </parameter>
+        <parameter name="first_vertex" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="n_vertices" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_attributes_array"
+              c:identifier="cogl_draw_attributes_array">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="VerticesMode" c:type="CoglVerticesMode"/>
+        </parameter>
+        <parameter name="first_vertex" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="n_vertices" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="attributes" transfer-ownership="none">
+          <type name="Attribute" c:type="CoglAttribute**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_indexed_attributes"
+              c:identifier="cogl_draw_indexed_attributes"
+              introspectable="0">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="VerticesMode" c:type="CoglVerticesMode"/>
+        </parameter>
+        <parameter name="first_vertex" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="n_vertices" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="indices" transfer-ownership="none">
+          <type name="Indices" c:type="CoglIndices*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_indexed_attributes_array"
+              c:identifier="cogl_draw_indexed_attributes_array">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="VerticesMode" c:type="CoglVerticesMode"/>
+        </parameter>
+        <parameter name="first_vertex" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="n_vertices" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="indices" transfer-ownership="none">
+          <type name="Indices" c:type="CoglIndices*"/>
+        </parameter>
+        <parameter name="attributes" transfer-ownership="none">
+          <type name="Attribute" c:type="CoglAttribute**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="end_gl" c:identifier="cogl_end_gl" version="1.0">
+      <doc xml:whitespace="preserve">This is the counterpart to cogl_begin_gl() used to delimit blocks of drawing
+code using raw OpenGL. Please refer to cogl_begin_gl() for full details.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="features_available" c:identifier="cogl_features_available">
+      <doc xml:whitespace="preserve">Checks whether the given COGL features are available. Multiple
+features can be checked for by or-ing them together with the '|'
+operator. %TRUE is only returned if all of the requested features
+are available.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the features are available, %FALSE otherwise.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="features" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A bitmask of features to check for</doc>
+          <type name="FeatureFlags" c:type="CoglFeatureFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_atan" c:identifier="cogl_fixed_atan" version="1.0">
+      <doc xml:whitespace="preserve">Computes the arc tangent of @a.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the arc tangent of the passed value, in fixed point notation</doc>
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglFixed number</doc>
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_atan2" c:identifier="cogl_fixed_atan2" version="1.0">
+      <doc xml:whitespace="preserve">Computes the arc tangent of @a / @b but uses the sign of both
+arguments to return the angle in right quadrant.
+notation</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the arc tangent of the passed fraction, in fixed point</doc>
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the numerator as a #CoglFixed number</doc>
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the denominator as a #CoglFixed number</doc>
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_cos" c:identifier="cogl_fixed_cos" version="1.0">
+      <doc xml:whitespace="preserve">Computes the cosine of @angle.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the cosine of the passed angle, in fixed point notation</doc>
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="angle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglFixed number</doc>
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_div" c:identifier="cogl_fixed_div">
+      <return-value transfer-ownership="none">
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_get_type" c:identifier="cogl_fixed_get_type">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="fixed_log2" c:identifier="cogl_fixed_log2" version="1.0">
+      <doc xml:whitespace="preserve">Calculates base 2 logarithm.
+This function is some 2.5 times faster on x86, and over 12 times faster on
+fpu-less arm, than using libc log().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">base 2 logarithm.</doc>
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">value to calculate base 2 logarithm from</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_mul" c:identifier="cogl_fixed_mul">
+      <return-value transfer-ownership="none">
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_mul_div" c:identifier="cogl_fixed_mul_div">
+      <return-value transfer-ownership="none">
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+        <parameter name="c" transfer-ownership="none">
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_pow" c:identifier="cogl_fixed_pow" version="1.0">
+      <doc xml:whitespace="preserve">Calculates @x to the @y power.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the power of @x to the @y</doc>
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">base</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#CoglFixed exponent</doc>
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_pow2" c:identifier="cogl_fixed_pow2" version="1.0">
+      <doc xml:whitespace="preserve">Calculates 2 to the @x power.
+This function is around 11 times faster on x86, and around 22 times faster
+on fpu-less arm than libc pow(2, x).</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the power of 2 to the passed value</doc>
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglFixed number</doc>
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_sin" c:identifier="cogl_fixed_sin" version="1.0">
+      <doc xml:whitespace="preserve">Computes the sine of @angle.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the sine of the passed angle, in fixed point notation</doc>
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="angle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglFixed number</doc>
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_sqrt" c:identifier="cogl_fixed_sqrt" version="1.0">
+      <doc xml:whitespace="preserve">Computes the square root of @x.
+notation</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the square root of the passed value, in floating point</doc>
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglFixed number</doc>
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fixed_tan" c:identifier="cogl_fixed_tan" version="1.0">
+      <doc xml:whitespace="preserve">Computes the tangent of @angle.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the tangent of the passed angle, in fixed point notation</doc>
+        <type name="Fixed" c:type="CoglFixed"/>
+      </return-value>
+      <parameters>
+        <parameter name="angle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglFixed number</doc>
+          <type name="Fixed" c:type="CoglFixed"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="flush" c:identifier="cogl_flush" version="1.0">
+      <doc xml:whitespace="preserve">This function should only need to be called in exceptional circumstances.
+As an optimization Cogl drawing functions may batch up primitives
+internally, so if you are trying to use raw GL outside of Cogl you stand a
+better chance of being successful if you ask Cogl to flush any batched
+geometry before making your state changes.
+It only ensure that the underlying driver is issued all the commands
+necessary to draw the batched primitives. It provides no guarantees about
+when the driver will complete the rendering.
+This provides no guarantees about the GL state upon returning and to avoid
+confusing Cogl you should aim to restore any changes you make before
+resuming use of Cogl.
+If you are making state changes with the intention of affecting Cogl drawing
+primitives you are 100% on your own since you stand a good chance of
+conflicting with Cogl internals. For example clutter-gst which currently
+uses direct GL calls to bind ARBfp programs will very likely break when Cogl
+starts to use ARBfb programs itself for the material API.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="frustum" c:identifier="cogl_frustum" version="0.8.2">
+      <doc xml:whitespace="preserve">Replaces the current projection matrix with a perspective matrix
+for the given viewing frustum.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="left" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Left clipping plane</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="right" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Right clipping plane</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="bottom" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Bottom clipping plane</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="top" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Top clipping plane</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="z_near" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Nearest visible point</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="z_far" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Furthest visible point along the z-axis</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_backface_culling_enabled"
+              c:identifier="cogl_get_backface_culling_enabled">
+      <doc xml:whitespace="preserve">Queries if backface culling has been enabled via
+cogl_set_backface_culling_enabled()</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if backface culling is enabled, and %FALSE otherwise</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="get_bitmasks" c:identifier="cogl_get_bitmasks">
+      <doc xml:whitespace="preserve">Gets the number of bitplanes used for each of the color components
+in the color buffer. Pass %NULL for any of the arguments if the
+value is not required.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="red"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">Return location for the number of red bits or %NULL</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+        <parameter name="green"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">Return location for the number of green bits or %NULL</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+        <parameter name="blue"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">Return location for the number of blue bits or %NULL</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+        <parameter name="alpha"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">Return location for the number of alpha bits or %NULL</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_depth_test_enabled"
+              c:identifier="cogl_get_depth_test_enabled"
+              deprecated="Use cogl_material_get_depth_test_enabled()"
+              deprecated-version="1.4">
+      <doc xml:whitespace="preserve">Queries if depth testing has been enabled via cogl_set_depth_test_enable()
+instead.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if depth testing is enabled, and %FALSE otherwise</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="get_features"
+              c:identifier="cogl_get_features"
+              version="0.8">
+      <doc xml:whitespace="preserve">Returns all of the features supported by COGL.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">A logical OR of all the supported COGL features.</doc>
+        <type name="FeatureFlags" c:type="CoglFeatureFlags"/>
+      </return-value>
+    </function>
+    <function name="get_modelview_matrix"
+              c:identifier="cogl_get_modelview_matrix">
+      <doc xml:whitespace="preserve">Stores the current model-view matrix in @matrix.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="matrix"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:whitespace="preserve">return location for the model-view matrix</doc>
+          <type name="Matrix" c:type="CoglMatrix*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_option_group"
+              c:identifier="cogl_get_option_group"
+              version="1.0"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Retrieves the #GOptionGroup used by COGL to parse the command
+line options. Clutter uses this to handle the COGL command line
+options during its initialization process.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a #GOptionGroup</doc>
+        <type name="GLib.OptionGroup" c:type="GOptionGroup*"/>
+      </return-value>
+    </function>
+    <function name="get_path"
+              c:identifier="cogl_get_path"
+              version="1.4"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Gets a pointer to the current path. The path can later be used
+again by calling cogl_path_set(). Note that the path isn't copied
+so if you later call any functions to add to the path it will
+affect the returned object too. No reference is taken on the path
+so if you want to retain it you should take your own reference with
+cogl_object_ref().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a pointer to the current path.</doc>
+        <type name="Path" c:type="CoglPath*"/>
+      </return-value>
+    </function>
+    <function name="get_proc_address"
+              c:identifier="cogl_get_proc_address"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Gets a pointer to a given GL or GL ES extension function. This acts
+as a wrapper around glXGetProcAddress() or whatever is the
+appropriate function for the current backend.
+function is not available.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a pointer to the requested function or %NULL if the</doc>
+        <type name="FuncPtr" c:type="CoglFuncPtr"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the function.</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_projection_matrix"
+              c:identifier="cogl_get_projection_matrix">
+      <doc xml:whitespace="preserve">Stores the current projection matrix in @matrix.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="matrix"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:whitespace="preserve">return location for the projection matrix</doc>
+          <type name="Matrix" c:type="CoglMatrix*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_rectangle_indices"
+              c:identifier="cogl_get_rectangle_indices"
+              introspectable="0">
+      <return-value>
+        <type name="Indices" c:type="CoglIndices*"/>
+      </return-value>
+      <parameters>
+        <parameter name="n_rectangles" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_source"
+              c:identifier="cogl_get_source"
+              version="1.6"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Returns the current source material as previously set using
+cogl_set_source().
+&lt;note&gt;You should typically consider the returned material immutable
+and not try to change any of its properties unless you own a
+reference to that material. At times you may be able to get a
+reference to an internally managed materials and the result of
+modifying such materials is undefined.&lt;/note&gt;</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">The current source material.</doc>
+        <type name="gpointer" c:type="void*"/>
+      </return-value>
+    </function>
+    <function name="get_viewport" c:identifier="cogl_get_viewport">
+      <doc xml:whitespace="preserve">Stores the current viewport in @v. @v[0] and @v[1] get the x and y
+position of the viewport and @v[2] and @v[3] get the width and
+height.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">pointer to a 4 element array of #float&lt;!-- --&gt;s to receive the viewport dimensions.</doc>
+          <array c:type="float" fixed-size="4">
+            <type name="gfloat" c:type="float"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="handle_get_type" c:identifier="cogl_handle_get_type">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="handle_ref" c:identifier="cogl_handle_ref">
+      <doc xml:whitespace="preserve">Increases the reference count of @handle by 1</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the handle, with its reference count increased</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="handle_unref" c:identifier="cogl_handle_unref">
+      <doc xml:whitespace="preserve">Drecreases the reference count of @handle by 1; if the reference
+count reaches 0, the resources allocated by @handle will be freed</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="index_array_new"
+              c:identifier="cogl_index_array_new"
+              version="1.4"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Declares a new #CoglIndexArray of @size bytes to contain vertex
+indices. Once declared, data can be set using
+cogl_buffer_set_data() or by mapping it into the application's
+address space using cogl_buffer_map().</doc>
+      <return-value>
+        <type name="IndexArray" c:type="CoglIndexArray*"/>
+      </return-value>
+      <parameters>
+        <parameter name="bytes" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of bytes to allocate for vertex attribute data.</doc>
+          <type name="gsize" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="indices_get_type" c:identifier="cogl_indices_get_type">
+      <return-value transfer-ownership="none">
+        <type name="IndicesType" c:type="CoglIndicesType"/>
+      </return-value>
+      <parameters>
+        <parameter name="indices" transfer-ownership="none">
+          <type name="Indices" c:type="CoglIndices*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="indices_new"
+              c:identifier="cogl_indices_new"
+              introspectable="0">
+      <return-value>
+        <type name="Indices" c:type="CoglIndices*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="IndicesType" c:type="CoglIndicesType"/>
+        </parameter>
+        <parameter name="indices_data" transfer-ownership="none">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+        <parameter name="n_indices" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="indices_new_for_array"
+              c:identifier="cogl_indices_new_for_array"
+              introspectable="0">
+      <return-value>
+        <type name="Indices" c:type="CoglIndices*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="IndicesType" c:type="CoglIndicesType"/>
+        </parameter>
+        <parameter name="array" transfer-ownership="none">
+          <type name="IndexArray" c:type="CoglIndexArray*"/>
+        </parameter>
+        <parameter name="offset" transfer-ownership="none">
+          <type name="gsize" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_attribute" c:identifier="cogl_is_attribute">
+      <doc xml:whitespace="preserve">Gets whether the given object references a #CoglAttribute.
+%FALSE otherwise</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the handle references a #CoglAttribute,</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglObject</doc>
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_bitmap" c:identifier="cogl_is_bitmap" version="1.0">
+      <doc xml:whitespace="preserve">Checks whether @handle is a #CoglHandle for a bitmap
+and %FALSE otherwise</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the passed handle represents a bitmap,</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle for a bitmap</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_buffer_EXP" c:identifier="cogl_is_buffer_EXP">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_indices_array"
+              c:identifier="cogl_is_indices_array"
+              version="1.4">
+      <doc xml:whitespace="preserve">Gets whether the given object references a #CoglIndexArray.
+%FALSE otherwise</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the handle references a #CoglIndexArray,</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglObject</doc>
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_material" c:identifier="cogl_is_material">
+      <doc xml:whitespace="preserve">Gets whether the given handle references an existing material object.
+%FALSE otherwise</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the handle references a #CoglMaterial,</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A CoglHandle</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_offscreen" c:identifier="cogl_is_offscreen">
+      <doc xml:whitespace="preserve">Determines whether the given #CoglHandle references an offscreen buffer
+object.
+%FALSE otherwise</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the handle references an offscreen buffer,</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A CoglHandle for an offscreen buffer</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_path" c:identifier="cogl_is_path">
+      <doc xml:whitespace="preserve">Gets whether the given handle references an existing path object.
+%FALSE otherwise</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the handle references a #CoglPath,</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A CoglHandle</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_pipeline" c:identifier="cogl_is_pipeline">
+      <doc xml:whitespace="preserve">Gets whether the given handle references an existing pipeline object.
+%FALSE otherwise</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the handle references a #CoglPipeline,</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A CoglHandle</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_pixel_array_EXP" c:identifier="cogl_is_pixel_array_EXP">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_primitive"
+              c:identifier="cogl_is_primitive"
+              version="1.6">
+      <doc xml:whitespace="preserve">Gets whether the given object references a #CoglPrimitive.
+%FALSE otherwise</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the handle references a #CoglPrimitive,</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglObject</doc>
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_program" c:identifier="cogl_is_program">
+      <doc xml:whitespace="preserve">Gets whether the given handle references an existing program object.
+%FALSE otherwise</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the handle references a program,</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A CoglHandle</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_shader" c:identifier="cogl_is_shader">
+      <doc xml:whitespace="preserve">Gets whether the given handle references an existing shader object.
+%FALSE otherwise</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the handle references a shader,</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A CoglHandle</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_texture" c:identifier="cogl_is_texture">
+      <doc xml:whitespace="preserve">Gets whether the given handle references an existing texture object.
+%FALSE otherwise</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the handle references a texture, and</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A CoglHandle</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_texture_3d_EXP" c:identifier="cogl_is_texture_3d_EXP">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_vertex_array"
+              c:identifier="cogl_is_vertex_array"
+              version="1.4">
+      <doc xml:whitespace="preserve">Gets whether the given object references a #CoglVertexArray.
+%FALSE otherwise</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the handle references a #CoglVertexArray,</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglObject</doc>
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_vertex_buffer"
+              c:identifier="cogl_is_vertex_buffer"
+              version="1.0">
+      <doc xml:whitespace="preserve">Checks whether @handle is a Vertex Buffer Object
+otherwise</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the handle is a VBO, and %FALSE</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle for a vertex buffer object</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_vertex_buffer_indices"
+              c:identifier="cogl_is_vertex_buffer_indices"
+              version="1.4">
+      <doc xml:whitespace="preserve">Checks whether @handle is a handle to the indices for a vertex
+buffer object
+otherwise</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the handle is indices, and %FALSE</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_layer_get_type"
+              c:identifier="cogl_material_layer_get_type">
+      <doc xml:whitespace="preserve">Retrieves the type of the layer
+Currently there is only one type of layer defined:
+%COGL_MATERIAL_LAYER_TYPE_TEXTURE, but considering we may add purely GLSL
+based layers in the future, you should write code that checks the type
+first.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the type of the layer</doc>
+        <type name="MaterialLayerType" c:type="CoglMaterialLayerType"/>
+      </return-value>
+      <parameters>
+        <parameter name="layer" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglMaterialLayer object</doc>
+          <type name="MaterialLayer" c:type="CoglMaterialLayer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_new"
+              c:identifier="cogl_material_new"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Allocates and initializes a blank white material</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a pointer to a new #CoglMaterial</doc>
+        <type name="Material" c:type="CoglMaterial*"/>
+      </return-value>
+    </function>
+    <function name="material_ref"
+              c:identifier="cogl_material_ref"
+              version="1.0"
+              introspectable="0"
+              deprecated="Use cogl_object_ref() instead"
+              deprecated-version="1.2">
+      <doc xml:whitespace="preserve">Increment the reference count for a #CoglMaterial.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the @material.</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglMaterial object.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="material_unref"
+              c:identifier="cogl_material_unref"
+              version="1.0"
+              deprecated="Use cogl_object_unref() instead"
+              deprecated-version="1.2">
+      <doc xml:whitespace="preserve">Decrement the reference count for a #CoglMaterial.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglMaterial object.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="matrix_equal"
+              c:identifier="cogl_matrix_equal"
+              version="1.4">
+      <doc xml:whitespace="preserve">Compares two matrices to see if they represent the same
+transformation. Although internally the matrices may have different
+annotations associated with them and may potentially have a cached
+inverse matrix these are not considered in the comparison.</doc>
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="v1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A 4x4 transformation matrix</doc>
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="v2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A 4x4 transformation matrix</doc>
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_ref"
+              c:identifier="cogl_object_ref"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Increases the reference count of @handle by 1</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the @object, with its reference count increased</doc>
+        <type name="gpointer" c:type="void*"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglObject</doc>
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_unref"
+              c:identifier="cogl_object_unref"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Drecreases the reference count of @object by 1; if the reference
+count reaches 0, the resources allocated by @object will be freed</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglObject</doc>
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="offscreen_new_to_texture"
+              c:identifier="cogl_offscreen_new_to_texture">
+      <doc xml:whitespace="preserve">This creates an offscreen buffer object using the given texture as the
+primary color buffer. It doesn't just initialize the contents of the
+offscreen buffer with the texture; they are tightly bound so that
+drawing to the offscreen buffer effectivly updates the contents of the
+given texture. You don't need to destroy the offscreen buffer before
+you can use the texture again.
+buffer or %COGL_INVALID_HANDLE if it wasn't possible to create the
+buffer.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a #CoglHandle for the new offscreen</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A CoglHandle for a Cogl texture</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="offscreen_ref"
+              c:identifier="cogl_offscreen_ref"
+              deprecated="cogl_handle_ref() should be used in new code."
+              deprecated-version="1.2">
+      <doc xml:whitespace="preserve">Increments the reference count on the offscreen buffer.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">For convenience it returns the given CoglHandle</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A CoglHandle for an offscreen buffer</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="offscreen_unref"
+              c:identifier="cogl_offscreen_unref"
+              deprecated="cogl_handle_unref() should be used in new code."
+              deprecated-version="1.2">
+      <doc xml:whitespace="preserve">Decreases the reference count for the offscreen buffer and frees it when
+the count reaches 0.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A CoglHandle for an offscreen buffer</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ortho" c:identifier="cogl_ortho" version="1.0">
+      <doc xml:whitespace="preserve">Replaces the current projection matrix with an orthographic projection
+matrix. See &lt;xref linkend="cogl-ortho-matrix"/&gt; to see how the matrix is
+calculated.
+&lt;figure id="cogl-ortho-matrix"&gt;
+&lt;title&gt;&lt;/title&gt;
+&lt;graphic fileref="cogl_ortho.png" format="PNG"/&gt;
+&lt;/figure&gt;
+&lt;note&gt;This function copies the arguments from OpenGL's glOrtho() even
+though they are unnecessarily confusing due to the z near and z far
+arguments actually being a "distance" from the origin, where
+negative values are behind the viewer, instead of coordinates for
+the z clipping planes which would have been consistent with the
+left, right bottom and top arguments.&lt;/note&gt;</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="left" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The coordinate for the left clipping plane</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="right" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The coordinate for the right clipping plane</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="bottom" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The coordinate for the bottom clipping plane</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="top" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The coordinate for the top clipping plane</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="near" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The &lt;emphasis&gt;distance&lt;/emphasis&gt; to the near clipping plane (negative if the plane is behind the viewer)</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="far" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The &lt;emphasis&gt;distance&lt;/emphasis&gt; for the far clipping plane (negative if the plane is behind the viewer)</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_arc" c:identifier="cogl_path_arc">
+      <doc xml:whitespace="preserve">Adds an elliptical arc segment to the current path. A straight line
+segment will link the current pen location with the first vertex
+of the arc. If you perform a move_to to the arcs start just before
+drawing it you create a free standing arc.
+The angles are measured in degrees where 0° is in the direction of
+the positive X axis and 90° is in the direction of the positive Y
+axis. The angle of the arc begins at @angle_1 and heads towards
+otherwise it will increase).</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="center_x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the elliptical arc center</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="center_y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the elliptical arc center</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="radius_x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X radius of the elliptical arc</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="radius_y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y radius of the elliptical arc</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="angle_1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Angle in degrees at which the arc begin</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="angle_2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Angle in degrees at which the arc ends</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_close" c:identifier="cogl_path_close">
+      <doc xml:whitespace="preserve">Closes the path being constructed by adding a straight line segment
+to it that ends at the first vertex of the path.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="path_curve_to" c:identifier="cogl_path_curve_to">
+      <doc xml:whitespace="preserve">Adds a cubic bezier curve segment to the current path with the given
+second, third and fourth control points and using current pen location
+as the first control point.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x_1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the second bezier control point</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y_1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the second bezier control point</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="x_2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the third bezier control point</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y_2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the third bezier control point</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="x_3" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the fourth bezier control point</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y_3" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the fourth bezier control point</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_ellipse" c:identifier="cogl_path_ellipse">
+      <doc xml:whitespace="preserve">Constructs an ellipse shape. If there is an existing path this will
+start a new disjoint sub-path.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="center_x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the ellipse center</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="center_y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the ellipse center</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="radius_x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X radius of the ellipse</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="radius_y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y radius of the ellipse</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_fill" c:identifier="cogl_path_fill">
+      <doc xml:whitespace="preserve">Fills the interior of the constructed shape using the current
+drawing color. The current path is then cleared. To use the path
+again, call cogl_path_fill_preserve() instead.
+The interior of the shape is determined using the fill rule of the
+path. See %CoglPathFillRule for details.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="path_fill_preserve"
+              c:identifier="cogl_path_fill_preserve"
+              version="1.0">
+      <doc xml:whitespace="preserve">Fills the interior of the constructed shape using the current
+drawing color and preserves the path to be used again. See
+cogl_path_fill() for a description what is considered the interior
+of the shape.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="path_get_fill_rule"
+              c:identifier="cogl_path_get_fill_rule"
+              version="1.4">
+      <doc xml:whitespace="preserve">Retrieves the fill rule set using cogl_path_set_fill_rule().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the fill rule that is used for the current path.</doc>
+        <type name="PathFillRule" c:type="CoglPathFillRule"/>
+      </return-value>
+    </function>
+    <function name="path_line" c:identifier="cogl_path_line">
+      <doc xml:whitespace="preserve">Constructs a straight line shape starting and ending at the given
+coordinates. If there is an existing path this will start a new
+disjoint sub-path.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x_1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the start line vertex</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y_1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the start line vertex</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="x_2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the end line vertex</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y_2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the end line vertex</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_line_to" c:identifier="cogl_path_line_to">
+      <doc xml:whitespace="preserve">Adds a straight line segment to the current path that ends at the
+given coordinates.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the end line vertex</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the end line vertex</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_move_to" c:identifier="cogl_path_move_to">
+      <doc xml:whitespace="preserve">Moves the pen to the given location. If there is an existing path
+this will start a new disjoint subpath.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the pen location to move to.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the pen location to move to.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_new" c:identifier="cogl_path_new" version="1.0">
+      <doc xml:whitespace="preserve">Clears the current path and starts a new one. Creating a new path
+also resets the fill rule to the default which is
+%COGL_PATH_FILL_RULE_EVEN_ODD.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="path_polygon" c:identifier="cogl_path_polygon">
+      <doc xml:whitespace="preserve">Constructs a polygonal shape of the given number of vertices. If
+there is an existing path this will start a new disjoint sub-path.
+The coords array must contain 2 * num_points values. The first value
+represents the X coordinate of the first vertex, the second value
+represents the Y coordinate of the first vertex, continuing in the same
+fashion for the rest of the vertices.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="coords" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A pointer to the first element of an array of fixed-point values that specify the vertex coordinates.</doc>
+          <array c:type="float*">
+            <type name="gfloat" c:type="float"/>
+          </array>
+        </parameter>
+        <parameter name="num_points" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The total number of vertices.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_polyline" c:identifier="cogl_path_polyline">
+      <doc xml:whitespace="preserve">Constructs a series of straight line segments, starting from the
+first given vertex coordinate. If there is an existing path this
+will start a new disjoint sub-path. Each subsequent segment starts
+where the previous one ended and ends at the next given vertex
+coordinate.
+The coords array must contain 2 * num_points values. The first value
+represents the X coordinate of the first vertex, the second value
+represents the Y coordinate of the first vertex, continuing in the same
+fashion for the rest of the vertices. (num_points - 1) segments will
+be constructed.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="coords" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A pointer to the first element of an array of fixed-point values that specify the vertex coordinates.</doc>
+          <array c:type="float*">
+            <type name="gfloat" c:type="float"/>
+          </array>
+        </parameter>
+        <parameter name="num_points" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The total number of vertices.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_rectangle" c:identifier="cogl_path_rectangle">
+      <doc xml:whitespace="preserve">Constructs a rectangular shape at the given coordinates. If there
+is an existing path this will start a new disjoint sub-path.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x_1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the top-left corner.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y_1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the top-left corner.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="x_2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the bottom-right corner.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y_2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the bottom-right corner.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_rel_curve_to" c:identifier="cogl_path_rel_curve_to">
+      <doc xml:whitespace="preserve">Adds a cubic bezier curve segment to the current path with the given
+second, third and fourth control points and using current pen location
+as the first control point. The given coordinates are relative to the
+current pen location.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x_1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the second bezier control point</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y_1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the second bezier control point</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="x_2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the third bezier control point</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y_2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the third bezier control point</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="x_3" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the fourth bezier control point</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y_3" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the fourth bezier control point</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_rel_line_to" c:identifier="cogl_path_rel_line_to">
+      <doc xml:whitespace="preserve">Adds a straight line segment to the current path that ends at the
+given coordinates relative to the current pen location.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X offset from the current pen location of the end line vertex</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y offset from the current pen location of the end line vertex</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_rel_move_to" c:identifier="cogl_path_rel_move_to">
+      <doc xml:whitespace="preserve">Moves the pen to the given offset relative to the current pen
+location. If there is an existing path this will start a new
+disjoint subpath.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X offset from the current pen location to move the pen to.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y offset from the current pen location to move the pen to.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_round_rectangle"
+              c:identifier="cogl_path_round_rectangle">
+      <doc xml:whitespace="preserve">Constructs a rectangular shape with rounded corners. If there is an
+existing path this will start a new disjoint sub-path.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x_1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the top-left corner.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y_1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the top-left corner.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="x_2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the bottom-right corner.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y_2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the bottom-right corner.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="radius" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Radius of the corner arcs.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="arc_step" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Angle increment resolution for subdivision of the corner arcs.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_set_fill_rule"
+              c:identifier="cogl_path_set_fill_rule"
+              version="1.4">
+      <doc xml:whitespace="preserve">Sets the fill rule of the current path to @fill_rule. This will
+affect how the path is filled when cogl_path_fill() is later
+called. Note that the fill rule state is attached to the path so
+calling cogl_get_path() will preserve the fill rule and calling
+cogl_path_new() will reset the fill rule back to the default.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="fill_rule" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The new fill rule.</doc>
+          <type name="PathFillRule" c:type="CoglPathFillRule"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="path_stroke" c:identifier="cogl_path_stroke">
+      <doc xml:whitespace="preserve">Strokes the constructed shape using the current drawing color and a
+width of 1 pixel (regardless of the current transformation
+matrix). To current path is then cleared. To use the path again,
+call cogl_path_stroke_preserve() instead.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="path_stroke_preserve"
+              c:identifier="cogl_path_stroke_preserve"
+              version="1.0">
+      <doc xml:whitespace="preserve">Strokes the constructed shape using the current drawing color and
+preserves the path to be used again.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="perspective" c:identifier="cogl_perspective">
+      <doc xml:whitespace="preserve">Replaces the current projection matrix with a perspective matrix
+based on the provided values.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="fovy" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Vertical of view angle in degrees.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="aspect" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Aspect ratio of diesplay</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="z_near" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Nearest visible point</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="z_far" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Furthest visible point along the z-axis</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pipeline_get_point_size"
+              c:identifier="cogl_pipeline_get_point_size"
+              version="2.0">
+      <doc xml:whitespace="preserve">Get the size of points drawn when %COGL_VERTICES_MODE_POINTS is
+used with the vertex buffer API.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the point size of the pipeline.</doc>
+        <type name="gfloat" c:type="float"/>
+      </return-value>
+      <parameters>
+        <parameter name="pipeline" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle to a pipeline.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pipeline_new"
+              c:identifier="cogl_pipeline_new"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Allocates and initializes a default simple pipeline that will color
+a primitive white.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a pointer to a new #CoglPipeline</doc>
+        <type name="Pipeline" c:type="CoglPipeline*"/>
+      </return-value>
+    </function>
+    <function name="pipeline_set_point_size"
+              c:identifier="cogl_pipeline_set_point_size"
+              version="2.0">
+      <doc xml:whitespace="preserve">Changes the size of points drawn when %COGL_VERTICES_MODE_POINTS is
+used with the vertex buffer API. Note that typically the GPU will
+only support a limited minimum and maximum range of point sizes. If
+the chosen point size is outside that range then the nearest value
+within that range will be used instead. The size of a point is in
+screen space so it will be the same regardless of any
+transformations. The default point size is 1.0.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pipeline" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle to a pipeline.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="point_size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new point size.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pixel_array_new_with_size_EXP"
+              c:identifier="cogl_pixel_array_new_with_size_EXP"
+              introspectable="0">
+      <return-value>
+        <type name="PixelArray" c:type="CoglPixelArray*"/>
+      </return-value>
+      <parameters>
+        <parameter name="width" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+        <parameter name="stride" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="polygon" c:identifier="cogl_polygon" version="1.0">
+      <doc xml:whitespace="preserve">Draws a convex polygon using the current source material to fill / texture
+with according to the texture coordinates passed.
+If @use_color is %TRUE then the color will be changed for each vertex using
+the value specified in the color member of #CoglTextureVertex. This can be
+used for example to make the texture fade out by setting the alpha value of
+the color.
+All of the texture coordinates must be in the range [0,1] and repeating the
+texture is not supported.
+Because of the way this function is implemented it will currently
+only work if either the texture is not sliced or the backend is not
+OpenGL ES and the minifying and magnifying functions are both set
+to COGL_MATERIAL_FILTER_NEAREST.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="vertices" transfer-ownership="none">
+          <doc xml:whitespace="preserve">An array of #CoglTextureVertex structs</doc>
+          <type name="TextureVertex" c:type="CoglTextureVertex*"/>
+        </parameter>
+        <parameter name="n_vertices" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The length of the vertices array</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="use_color" transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the color member of #CoglTextureVertex should be used</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pop_draw_buffer"
+              c:identifier="cogl_pop_draw_buffer"
+              deprecated="The draw buffer API was replaced with a framebuffer API"
+              deprecated-version="1.2">
+      <doc xml:whitespace="preserve">Restore cogl_set_draw_buffer() state.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="pop_framebuffer"
+              c:identifier="cogl_pop_framebuffer"
+              version="1.2">
+      <doc xml:whitespace="preserve">Restores the framebuffer that was previously at the top of the stack.
+All subsequent drawing will be redirected to this framebuffer.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="pop_matrix" c:identifier="cogl_pop_matrix">
+      <doc xml:whitespace="preserve">Restores the current model-view matrix from the matrix stack.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="pop_source" c:identifier="cogl_pop_source" version="1.6">
+      <doc xml:whitespace="preserve">Removes the material at the top of the source stack. The material
+at the top of this stack defines the GPU state used to process
+later primitives as defined by cogl_set_source().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="primitive_new"
+              c:identifier="cogl_primitive_new"
+              version="1.6"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Combines a set of #CoglAttribute&lt;!-- --&gt;s with a specific draw @mode
+and defines a vertex count so a #CoglPrimitive object can be retained and
+drawn later with no addition information required.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">A newly allocated #CoglPrimitive object</doc>
+        <type name="Primitive" c:type="CoglPrimitive*"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglVerticesMode defining how to draw the vertices</doc>
+          <type name="VerticesMode" c:type="CoglVerticesMode"/>
+        </parameter>
+        <parameter name="n_vertices" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of vertices to process when drawing</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="primitive_new_p2"
+              c:identifier="cogl_primitive_new_p2"
+              version="1.6"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Provides a convenient way to describe a primitive, such as a single
+triangle strip or a triangle fan, that will internally allocate the
+necessary #CoglVertexArray storage, describe the position
+attribute with a #CoglAttribute and upload your data.
+For example to draw a convex polygon you can do:
+|[
+CoglVertexP2 triangle[] =
+{
+{ 0,   300 },
+{ 150, 0,  },
+{ 300, 300 }
+};
+prim = cogl_primitive_new_p2 (COGL_VERTICES_MODE_TRIANGLE_FAN,
+3, triangle);
+cogl_primitive_draw (prim);
+]|
+&lt;note&gt;The primitive API doesn't support drawing with sliced
+textures (since switching between slices implies changing state and
+so that implies multiple primitives need to be submitted). You
+should pass the %COGL_TEXTURE_NO_SLICING flag to all textures that
+might be used while drawing with this API. If your hardware doesn't
+support non-power of two textures (For example you are using GLES
+1.1) then you will need to make sure your assets are resized to a
+power-of-two size (though they don't have to be square)&lt;/note&gt;
+1. This can be freed using cogl_object_unref().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">A newly allocated #CoglPrimitive with a reference of</doc>
+        <type name="Primitive" c:type="CoglPrimitive*"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglVerticesMode defining how to draw the vertices</doc>
+          <type name="VerticesMode" c:type="CoglVerticesMode"/>
+        </parameter>
+        <parameter name="n_vertices" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of vertices to process when drawing</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">An array of #CoglVertexP2 vertices</doc>
+          <type name="VertexP2" c:type="CoglVertexP2*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="primitive_new_p2c4"
+              c:identifier="cogl_primitive_new_p2c4"
+              version="1.6"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Provides a convenient way to describe a primitive, such as a single
+triangle strip or a triangle fan, that will internally allocate the
+necessary #CoglVertexArray storage, describe the position
+and color attributes with #CoglAttribute&lt;!-- --&gt;s and upload
+your data.
+For example to draw a convex polygon with a linear gradient you
+can do:
+|[
+CoglVertexP2C4 triangle[] =
+{
+{ 0,   300,  0xff, 0x00, 0x00, 0xff },
+{ 150, 0,    0x00, 0xff, 0x00, 0xff },
+{ 300, 300,  0xff, 0x00, 0x00, 0xff }
+};
+prim = cogl_primitive_new_p2c4 (COGL_VERTICES_MODE_TRIANGLE_FAN,
+3, triangle);
+cogl_primitive_draw (prim);
+]|
+&lt;note&gt;The primitive API doesn't support drawing with sliced
+textures (since switching between slices implies changing state and
+so that implies multiple primitives need to be submitted). You
+should pass the %COGL_TEXTURE_NO_SLICING flag to all textures that
+might be used while drawing with this API. If your hardware doesn't
+support non-power of two textures (For example you are using GLES
+1.1) then you will need to make sure your assets are resized to a
+power-of-two size (though they don't have to be square)&lt;/note&gt;
+1. This can be freed using cogl_object_unref().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">A newly allocated #CoglPrimitive with a reference of</doc>
+        <type name="Primitive" c:type="CoglPrimitive*"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglVerticesMode defining how to draw the vertices</doc>
+          <type name="VerticesMode" c:type="CoglVerticesMode"/>
+        </parameter>
+        <parameter name="n_vertices" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of vertices to process when drawing</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">An array of #CoglVertexP2C4 vertices</doc>
+          <type name="VertexP2C4" c:type="CoglVertexP2C4*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="primitive_new_p2t2"
+              c:identifier="cogl_primitive_new_p2t2"
+              version="1.6"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Provides a convenient way to describe a primitive, such as a single
+triangle strip or a triangle fan, that will internally allocate the
+necessary #CoglVertexArray storage, describe the position and
+texture coordinate attributes with #CoglAttribute&lt;!-- --&gt;s and
+upload your data.
+For example to draw a convex polygon with texture mapping you can
+do:
+|[
+CoglVertexP2T2 triangle[] =
+{
+{ 0,   300,  0.0, 1.0},
+{ 150, 0,    0.5, 0.0},
+{ 300, 300,  1.0, 1.0}
+};
+prim = cogl_primitive_new_p2t2 (COGL_VERTICES_MODE_TRIANGLE_FAN,
+3, triangle);
+cogl_primitive_draw (prim);
+]|
+&lt;note&gt;The primitive API doesn't support drawing with sliced
+textures (since switching between slices implies changing state and
+so that implies multiple primitives need to be submitted). You
+should pass the %COGL_TEXTURE_NO_SLICING flag to all textures that
+might be used while drawing with this API. If your hardware doesn't
+support non-power of two textures (For example you are using GLES
+1.1) then you will need to make sure your assets are resized to a
+power-of-two size (though they don't have to be square)&lt;/note&gt;
+1. This can be freed using cogl_object_unref().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">A newly allocated #CoglPrimitive with a reference of</doc>
+        <type name="Primitive" c:type="CoglPrimitive*"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglVerticesMode defining how to draw the vertices</doc>
+          <type name="VerticesMode" c:type="CoglVerticesMode"/>
+        </parameter>
+        <parameter name="n_vertices" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of vertices to process when drawing</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">An array of #CoglVertexP2T2 vertices</doc>
+          <type name="VertexP2T2" c:type="CoglVertexP2T2*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="primitive_new_p2t2c4"
+              c:identifier="cogl_primitive_new_p2t2c4"
+              version="1.6"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Provides a convenient way to describe a primitive, such as a single
+triangle strip or a triangle fan, that will internally allocate the
+necessary #CoglVertexArray storage, describe the position, texture
+coordinate and color attributes with #CoglAttribute&lt;!-- --&gt;s and
+upload your data.
+For example to draw a convex polygon with texture mapping and a
+linear gradient you can do:
+|[
+CoglVertexP2T2C4 triangle[] =
+{
+{ 0,   300,  0.0, 1.0,  0xff, 0x00, 0x00, 0xff},
+{ 150, 0,    0.5, 0.0,  0x00, 0xff, 0x00, 0xff},
+{ 300, 300,  1.0, 1.0,  0xff, 0x00, 0x00, 0xff}
+};
+prim = cogl_primitive_new_p2t2c4 (COGL_VERTICES_MODE_TRIANGLE_FAN,
+3, triangle);
+cogl_primitive_draw (prim);
+]|
+&lt;note&gt;The primitive API doesn't support drawing with sliced
+textures (since switching between slices implies changing state and
+so that implies multiple primitives need to be submitted). You
+should pass the %COGL_TEXTURE_NO_SLICING flag to all textures that
+might be used while drawing with this API. If your hardware doesn't
+support non-power of two textures (For example you are using GLES
+1.1) then you will need to make sure your assets are resized to a
+power-of-two size (though they don't have to be square)&lt;/note&gt;
+1. This can be freed using cogl_object_unref().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">A newly allocated #CoglPrimitive with a reference of</doc>
+        <type name="Primitive" c:type="CoglPrimitive*"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglVerticesMode defining how to draw the vertices</doc>
+          <type name="VerticesMode" c:type="CoglVerticesMode"/>
+        </parameter>
+        <parameter name="n_vertices" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of vertices to process when drawing</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">An array of #CoglVertexP2T2C4 vertices</doc>
+          <type name="VertexP2T2C4" c:type="CoglVertexP2T2C4*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="primitive_new_p3"
+              c:identifier="cogl_primitive_new_p3"
+              version="1.6"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Provides a convenient way to describe a primitive, such as a single
+triangle strip or a triangle fan, that will internally allocate the
+necessary #CoglVertexArray storage, describe the position
+attribute with a #CoglAttribute and upload your data.
+For example to draw a convex polygon you can do:
+|[
+CoglVertexP3 triangle[] =
+{
+{ 0,   300, 0 },
+{ 150, 0,   0 },
+{ 300, 300, 0 }
+};
+prim = cogl_primitive_new_p3 (COGL_VERTICES_MODE_TRIANGLE_FAN,
+3, triangle);
+cogl_primitive_draw (prim);
+]|
+&lt;note&gt;The primitive API doesn't support drawing with sliced
+textures (since switching between slices implies changing state and
+so that implies multiple primitives need to be submitted). You
+should pass the %COGL_TEXTURE_NO_SLICING flag to all textures that
+might be used while drawing with this API. If your hardware doesn't
+support non-power of two textures (For example you are using GLES
+1.1) then you will need to make sure your assets are resized to a
+power-of-two size (though they don't have to be square)&lt;/note&gt;
+1. This can be freed using cogl_object_unref().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">A newly allocated #CoglPrimitive with a reference of</doc>
+        <type name="Primitive" c:type="CoglPrimitive*"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglVerticesMode defining how to draw the vertices</doc>
+          <type name="VerticesMode" c:type="CoglVerticesMode"/>
+        </parameter>
+        <parameter name="n_vertices" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of vertices to process when drawing</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">An array of #CoglVertexP3 vertices</doc>
+          <type name="VertexP3" c:type="CoglVertexP3*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="primitive_new_p3c4"
+              c:identifier="cogl_primitive_new_p3c4"
+              version="1.6"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Provides a convenient way to describe a primitive, such as a single
+triangle strip or a triangle fan, that will internally allocate the
+necessary #CoglVertexArray storage, describe the position
+and color attributes with #CoglAttribute&lt;!-- --&gt;s and upload
+your data.
+For example to draw a convex polygon with a linear gradient you
+can do:
+|[
+CoglVertexP3C4 triangle[] =
+{
+{ 0,   300, 0,  0xff, 0x00, 0x00, 0xff },
+{ 150, 0,   0,  0x00, 0xff, 0x00, 0xff },
+{ 300, 300, 0,  0xff, 0x00, 0x00, 0xff }
+};
+prim = cogl_primitive_new_p3c4 (COGL_VERTICES_MODE_TRIANGLE_FAN,
+3, triangle);
+cogl_primitive_draw (prim);
+]|
+&lt;note&gt;The primitive API doesn't support drawing with sliced
+textures (since switching between slices implies changing state and
+so that implies multiple primitives need to be submitted). You
+should pass the %COGL_TEXTURE_NO_SLICING flag to all textures that
+might be used while drawing with this API. If your hardware doesn't
+support non-power of two textures (For example you are using GLES
+1.1) then you will need to make sure your assets are resized to a
+power-of-two size (though they don't have to be square)&lt;/note&gt;
+1. This can be freed using cogl_object_unref().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">A newly allocated #CoglPrimitive with a reference of</doc>
+        <type name="Primitive" c:type="CoglPrimitive*"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglVerticesMode defining how to draw the vertices</doc>
+          <type name="VerticesMode" c:type="CoglVerticesMode"/>
+        </parameter>
+        <parameter name="n_vertices" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of vertices to process when drawing</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">An array of #CoglVertexP3C4 vertices</doc>
+          <type name="VertexP3C4" c:type="CoglVertexP3C4*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="primitive_new_p3t2"
+              c:identifier="cogl_primitive_new_p3t2"
+              version="1.6"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Provides a convenient way to describe a primitive, such as a single
+triangle strip or a triangle fan, that will internally allocate the
+necessary #CoglVertexArray storage, describe the position and
+texture coordinate attributes with #CoglAttribute&lt;!-- --&gt;s and
+upload your data.
+For example to draw a convex polygon with texture mapping you can
+do:
+|[
+CoglVertexP3T2 triangle[] =
+{
+{ 0,   300, 0,  0.0, 1.0},
+{ 150, 0,   0,  0.5, 0.0},
+{ 300, 300, 0,  1.0, 1.0}
+};
+prim = cogl_primitive_new_p3t2 (COGL_VERTICES_MODE_TRIANGLE_FAN,
+3, triangle);
+cogl_primitive_draw (prim);
+]|
+&lt;note&gt;The primitive API doesn't support drawing with sliced
+textures (since switching between slices implies changing state and
+so that implies multiple primitives need to be submitted). You
+should pass the %COGL_TEXTURE_NO_SLICING flag to all textures that
+might be used while drawing with this API. If your hardware doesn't
+support non-power of two textures (For example you are using GLES
+1.1) then you will need to make sure your assets are resized to a
+power-of-two size (though they don't have to be square)&lt;/note&gt;
+1. This can be freed using cogl_object_unref().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">A newly allocated #CoglPrimitive with a reference of</doc>
+        <type name="Primitive" c:type="CoglPrimitive*"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglVerticesMode defining how to draw the vertices</doc>
+          <type name="VerticesMode" c:type="CoglVerticesMode"/>
+        </parameter>
+        <parameter name="n_vertices" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of vertices to process when drawing</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">An array of #CoglVertexP3T2 vertices</doc>
+          <type name="VertexP3T2" c:type="CoglVertexP3T2*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="primitive_new_p3t2c4"
+              c:identifier="cogl_primitive_new_p3t2c4"
+              version="1.6"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Provides a convenient way to describe a primitive, such as a single
+triangle strip or a triangle fan, that will internally allocate the
+necessary #CoglVertexArray storage, describe the position, texture
+coordinate and color attributes with #CoglAttribute&lt;!-- --&gt;s and
+upload your data.
+For example to draw a convex polygon with texture mapping and a
+linear gradient you can do:
+|[
+CoglVertexP3T2C4 triangle[] =
+{
+{ 0,   300, 0,  0.0, 1.0,  0xff, 0x00, 0x00, 0xff},
+{ 150, 0,   0,  0.5, 0.0,  0x00, 0xff, 0x00, 0xff},
+{ 300, 300, 0,  1.0, 1.0,  0xff, 0x00, 0x00, 0xff}
+};
+prim = cogl_primitive_new_p3t2c4 (COGL_VERTICES_MODE_TRIANGLE_FAN,
+3, triangle);
+cogl_primitive_draw (prim);
+]|
+&lt;note&gt;The primitive API doesn't support drawing with sliced
+textures (since switching between slices implies changing state and
+so that implies multiple primitives need to be submitted). You
+should pass the %COGL_TEXTURE_NO_SLICING flag to all textures that
+might be used while drawing with this API. If your hardware doesn't
+support non-power of two textures (For example you are using GLES
+1.1) then you will need to make sure your assets are resized to a
+power-of-two size (though they don't have to be square)&lt;/note&gt;
+1. This can be freed using cogl_object_unref().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">A newly allocated #CoglPrimitive with a reference of</doc>
+        <type name="Primitive" c:type="CoglPrimitive*"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglVerticesMode defining how to draw the vertices</doc>
+          <type name="VerticesMode" c:type="CoglVerticesMode"/>
+        </parameter>
+        <parameter name="n_vertices" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of vertices to process when drawing</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">An array of #CoglVertexP3T2C4 vertices</doc>
+          <type name="VertexP3T2C4" c:type="CoglVertexP3T2C4*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="primitive_new_with_attributes_array"
+              c:identifier="cogl_primitive_new_with_attributes_array"
+              introspectable="0">
+      <return-value>
+        <type name="Primitive" c:type="CoglPrimitive*"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="VerticesMode" c:type="CoglVerticesMode"/>
+        </parameter>
+        <parameter name="n_vertices" transfer-ownership="none">
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="attributes" transfer-ownership="none">
+          <type name="Attribute" c:type="CoglAttribute**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_attach_shader"
+              c:identifier="cogl_program_attach_shader">
+      <doc xml:whitespace="preserve">Attaches a shader to a program object, a program can have one vertex shader
+and one fragment shader attached.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="program_handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle for a shdaer program.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="shader_handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle for a vertex of fragment shader.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_get_uniform_location"
+              c:identifier="cogl_program_get_uniform_location">
+      <doc xml:whitespace="preserve">Retrieve the location (offset) of a uniform variable in a shader program,
+a uniform is a variable that is constant for all vertices/fragments for a
+shader object and is possible to modify as an external parameter.
+This uniform can be set using cogl_program_uniform_1f() when the
+program is in use.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the offset of a uniform in a specified program.</doc>
+        <type name="gint" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle for a shader program.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="uniform_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of a uniform.</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_link" c:identifier="cogl_program_link">
+      <doc xml:whitespace="preserve">Links a program making it ready for use.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle for a shader program.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_ref"
+              c:identifier="cogl_program_ref"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Add an extra reference to a program.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">@handle</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglHandle to a program.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_set_uniform_1f"
+              c:identifier="cogl_program_set_uniform_1f"
+              version="1.4">
+      <doc xml:whitespace="preserve">Changes the value of a floating point uniform for the given linked</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="program" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglHandle for a linked program</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="uniform_location" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the uniform location retrieved from cogl_program_get_uniform_location().</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new value of the uniform.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_set_uniform_1i"
+              c:identifier="cogl_program_set_uniform_1i"
+              version="1.4">
+      <doc xml:whitespace="preserve">Changes the value of an integer uniform for the given linked</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="program" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglHandle for a linked program</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="uniform_location" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the uniform location retrieved from cogl_program_get_uniform_location().</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new value of the uniform.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_set_uniform_float"
+              c:identifier="cogl_program_set_uniform_float"
+              version="1.4">
+      <doc xml:whitespace="preserve">Changes the value of a float vector uniform, or uniform array for
+the given linked @program.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="program" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglHandle for a linked program</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="uniform_location" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the uniform location retrieved from cogl_program_get_uniform_location().</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="n_components" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of components for the uniform. For example with glsl you'd use 3 for a vec3 or 4 for a vec4.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <doc xml:whitespace="preserve">For uniform arrays this is the array length otherwise just pass 1</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new value of the uniform[s].</doc>
+          <array length="3" c:type="float*">
+            <type name="gfloat" c:type="float"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_set_uniform_int"
+              c:identifier="cogl_program_set_uniform_int"
+              version="1.4">
+      <doc xml:whitespace="preserve">Changes the value of a int vector uniform, or uniform array for
+the given linked @program.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="program" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglHandle for a linked program</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="uniform_location" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the uniform location retrieved from cogl_program_get_uniform_location().</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="n_components" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of components for the uniform. For example with glsl you'd use 3 for a vec3 or 4 for a vec4.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <doc xml:whitespace="preserve">For uniform arrays this is the array length otherwise just pass 1</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new value of the uniform[s].</doc>
+          <array length="3" c:type="int*">
+            <type name="gint" c:type="int"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_set_uniform_matrix"
+              c:identifier="cogl_program_set_uniform_matrix"
+              version="1.4">
+      <doc xml:whitespace="preserve">Changes the value of a matrix uniform, or uniform array in the
+given linked @program.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="program" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglHandle for a linked program</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="uniform_location" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the uniform location retrieved from cogl_program_get_uniform_location().</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="dimensions" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The dimensions of the matrix. So for for example pass 2 for a 2x2 matrix or 3 for 3x3.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <doc xml:whitespace="preserve">For uniform arrays this is the array length otherwise just pass 1</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="transpose" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Whether to transpose the matrix when setting the uniform.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new value of the uniform.</doc>
+          <array length="3" c:type="float*">
+            <type name="gfloat" c:type="float"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_uniform_1f"
+              c:identifier="cogl_program_uniform_1f"
+              deprecated="Use cogl_program_set_uniform_1f() instead."
+              deprecated-version="1.4">
+      <doc xml:whitespace="preserve">Changes the value of a floating point uniform in the currently
+used (see cogl_program_use()) shader program.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="uniform_no" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the uniform to set.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new value of the uniform.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_uniform_1i"
+              c:identifier="cogl_program_uniform_1i"
+              deprecated="Use cogl_program_set_uniform_1i() instead."
+              deprecated-version="1.4">
+      <doc xml:whitespace="preserve">Changes the value of an integer uniform in the currently
+used (see cogl_program_use()) shader program.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="uniform_no" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the uniform to set.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new value of the uniform.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_uniform_float"
+              c:identifier="cogl_program_uniform_float"
+              deprecated="Use cogl_program_set_uniform_float() instead."
+              deprecated-version="1.4">
+      <doc xml:whitespace="preserve">Changes the value of a float vector uniform, or uniform array in the
+currently used (see cogl_program_use()) shader program.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="uniform_no" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the uniform to set.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Size of float vector.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Size of array of uniforms.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new value of the uniform.</doc>
+          <array length="2" c:type="float*">
+            <type name="gfloat" c:type="float"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_uniform_int"
+              c:identifier="cogl_program_uniform_int">
+      <doc xml:whitespace="preserve">Changes the value of a int vector uniform, or uniform array in the
+currently used (see cogl_program_use()) shader program.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="uniform_no" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the uniform to set.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Size of int vector.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Size of array of uniforms.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new value of the uniform.</doc>
+          <array length="2" c:type="int*">
+            <type name="gint" c:type="int"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_uniform_matrix"
+              c:identifier="cogl_program_uniform_matrix">
+      <doc xml:whitespace="preserve">Changes the value of a matrix uniform, or uniform array in the
+currently used (see cogl_program_use()) shader program. The @size
+parameter is used to determine the square size of the matrix.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="uniform_no" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the uniform to set.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Size of matrix.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Size of array of uniforms.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="transpose" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Whether to transpose the matrix when setting the uniform.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new value of the uniform.</doc>
+          <array length="2" c:type="float*">
+            <type name="gfloat" c:type="float"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_unref" c:identifier="cogl_program_unref">
+      <doc xml:whitespace="preserve">Removes a reference to a program. If it was the last reference the
+program object will be destroyed.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglHandle to a program.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="program_use" c:identifier="cogl_program_use">
+      <doc xml:whitespace="preserve">Activate a specific shader program replacing that part of the GL
+rendering pipeline, if passed in %COGL_INVALID_HANDLE the default
+behavior of GL is reinstated.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle for a shader program or %COGL_INVALID_HANDLE.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="push_draw_buffer"
+              c:identifier="cogl_push_draw_buffer"
+              deprecated="The draw buffer API was replaced with a framebuffer API"
+              deprecated-version="1.2">
+      <doc xml:whitespace="preserve">Save cogl_set_draw_buffer() state.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="push_framebuffer"
+              c:identifier="cogl_push_framebuffer"
+              version="1.2">
+      <doc xml:whitespace="preserve">Redirects all subsequent drawing to the specified framebuffer. This can
+either be an offscreen buffer created with cogl_offscreen_new_to_texture ()
+or in the future it may be an onscreen framebuffer too.
+You should understand that a framebuffer owns the following state:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;simpara&gt;The projection matrix&lt;/simpara&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;simpara&gt;The modelview matrix stack&lt;/simpara&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;simpara&gt;The viewport&lt;/simpara&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;simpara&gt;The clip stack&lt;/simpara&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+So these items will automatically be saved and restored when you
+push and pop between different framebuffers.
+Also remember a newly allocated framebuffer will have an identity matrix for
+the projection and modelview matrices which gives you a coordinate space
+like OpenGL with (-1, -1) corresponding to the top left of the viewport,
+(1, 1) corresponding to the bottom right and +z coming out towards the
+viewer.
+If you want to set up a coordinate space like Clutter does with (0, 0)
+corresponding to the top left and (framebuffer_width, framebuffer_height)
+corresponding to the bottom right you can do so like this:
+|[
+static void
+setup_viewport (unsigned int width,
+unsigned int height,
+float fovy,
+float aspect,
+float z_near,
+float z_far)
+{
+float z_camera;
+CoglMatrix projection_matrix;
+CoglMatrix mv_matrix;
+cogl_set_viewport (0, 0, width, height);
+cogl_perspective (fovy, aspect, z_near, z_far);
+cogl_get_projection_matrix (&amp;amp;projection_matrix);
+z_camera = 0.5 * projection_matrix.xx;
+cogl_matrix_init_identity (&amp;amp;mv_matrix);
+cogl_matrix_translate (&amp;amp;mv_matrix, -0.5f, -0.5f, -z_camera);
+cogl_matrix_scale (&amp;amp;mv_matrix, 1.0f / width, -1.0f / height, 1.0f / width);
+cogl_matrix_translate (&amp;amp;mv_matrix, 0.0f, -1.0 * height, 0.0f);
+cogl_set_modelview_matrix (&amp;amp;mv_matrix);
+}
+static void
+my_init_framebuffer (ClutterStage *stage,
+CoglFramebuffer *framebuffer,
+unsigned int framebuffer_width,
+unsigned int framebuffer_height)
+{
+ClutterPerspective perspective;
+clutter_stage_get_perspective (stage, &amp;perspective);
+cogl_push_framebuffer (framebuffer);
+setup_viewport (framebuffer_width,
+framebuffer_height,
+perspective.fovy,
+perspective.aspect,
+perspective.z_near,
+perspective.z_far);
+}
+]|
+The previous framebuffer can be restored by calling cogl_pop_framebuffer()</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglFramebuffer object, either onscreen or offscreen.</doc>
+          <type name="Framebuffer" c:type="CoglFramebuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="push_matrix" c:identifier="cogl_push_matrix">
+      <doc xml:whitespace="preserve">Stores the current model-view matrix on the matrix stack. The matrix
+can later be restored with cogl_pop_matrix().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="push_source" c:identifier="cogl_push_source" version="1.6">
+      <doc xml:whitespace="preserve">Pushes the given @material to the top of the source stack. The
+material at the top of this stack defines the GPU state used to
+process later primitives as defined by cogl_set_source().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglMaterial</doc>
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="read_pixels" c:identifier="cogl_read_pixels">
+      <doc xml:whitespace="preserve">This reads a rectangle of pixels from the current framebuffer where
+position (0, 0) is the top left. The pixel at (x, y) is the first
+read, and the data is returned with a rowstride of (width * 4).
+Currently Cogl assumes that the framebuffer is in a premultiplied
+format so if @format is non-premultiplied it will convert it. To
+read the pixel values without any conversion you should either
+specify a format that doesn't use an alpha channel or use one of
+the formats ending in PRE.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The window x position to start reading from</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The window y position to start reading from</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The width of the rectangle you want to read</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The height of the rectangle you want to read</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="source" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Identifies which auxillary buffer you want to read (only COGL_READ_PIXELS_COLOR_BUFFER supported currently)</doc>
+          <type name="ReadPixelsFlags" c:type="CoglReadPixelsFlags"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The pixel format you want the result in (only COGL_PIXEL_FORMAT_RGBA_8888 supported currently)</doc>
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+        <parameter name="pixels" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The location to write the pixel data.</doc>
+          <type name="guint8" c:type="guint8*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rectangle" c:identifier="cogl_rectangle">
+      <doc xml:whitespace="preserve">Fills a rectangle at the given coordinates with the current source material</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x_1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the top-left corner</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y_1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the top-left corner</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="x_2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the bottom-right corner</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y_2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the bottom-right corner</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rectangle_with_multitexture_coords"
+              c:identifier="cogl_rectangle_with_multitexture_coords"
+              version="1.0">
+      <doc xml:whitespace="preserve">This function draws a rectangle using the current source material to
+texture or fill with. As a material may contain multiple texture layers
+this interface lets you supply texture coordinates for each layer of the
+material.
+The first pair of coordinates are for the first layer (with the smallest
+layer index) and if you supply less texture coordinates than there are
+layers in the current source material then default texture coordinates
+(0.0, 0.0, 1.0, 1.0) are generated.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">x coordinate upper left on screen.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">y coordinate upper left on screen.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="x2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">x coordinate lower right on screen.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">y coordinate lower right on screen.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="tex_coords" transfer-ownership="none">
+          <doc xml:whitespace="preserve">An array containing groups of 4 float values: [tx1, ty1, tx2, ty2] that are interpreted as two texture coordinates; one for the upper left texel, and one for the lower right texel. Each value should be between 0.0 and 1.0, where the coordinate (0.0, 0.0) represents the top left of the texture, and (1.0, 1.0) the bottom right.</doc>
+          <array c:type="float*">
+            <type name="gfloat" c:type="float"/>
+          </array>
+        </parameter>
+        <parameter name="tex_coords_len" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The length of the tex_coords array. (e.g. for one layer and one group of texture coordinates, this would be 4)</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rectangle_with_texture_coords"
+              c:identifier="cogl_rectangle_with_texture_coords"
+              version="1.0">
+      <doc xml:whitespace="preserve">Draw a rectangle using the current material and supply texture coordinates
+to be used for the first texture layer of the material. To draw the entire
+texture pass in @tx1=0.0 @ty1=0.0 @tx2=1.0 @ty2=1.0.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">x coordinate upper left on screen.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">y coordinate upper left on screen.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="x2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">x coordinate lower right on screen.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">y coordinate lower right on screen.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="tx1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">x part of texture coordinate to use for upper left pixel</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="ty1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">y part of texture coordinate to use for upper left pixel</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="tx2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">x part of texture coordinate to use for lower right pixel</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="ty2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">y part of texture coordinate to use for left pixel</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rectangles" c:identifier="cogl_rectangles" version="1.0">
+      <doc xml:whitespace="preserve">Draws a series of rectangles in the same way that
+cogl_rectangle() does. In some situations it can give a
+significant performance boost to use this function rather than
+calling cogl_rectangle() separately for each rectangle.
+parameters x1, y1, x2, and y2, and have the same
+meaning as in cogl_rectangle().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="verts" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an array of vertices</doc>
+          <array c:type="float*">
+            <type name="gfloat" c:type="float"/>
+          </array>
+        </parameter>
+        <parameter name="n_rects" transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of rectangles to draw</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rectangles_with_texture_coords"
+              c:identifier="cogl_rectangles_with_texture_coords"
+              version="0.8.6">
+      <doc xml:whitespace="preserve">Draws a series of rectangles in the same way that
+cogl_rectangle_with_texture_coords() does. In some situations it can give a
+significant performance boost to use this function rather than
+calling cogl_rectangle_with_texture_coords() separately for each rectangle.
+parameters x1, y1, x2, y2, tx1, ty1, tx2 and ty2 and have the same
+meaning as in cogl_rectangle_with_texture_coords().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="verts" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an array of vertices</doc>
+          <array c:type="float*">
+            <type name="gfloat" c:type="float"/>
+          </array>
+        </parameter>
+        <parameter name="n_rects" transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of rectangles to draw</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rotate" c:identifier="cogl_rotate">
+      <doc xml:whitespace="preserve">Multiplies the current model-view matrix by one that rotates the
+model around the vertex specified by @x, @y and @z. The rotation
+follows the right-hand thumb rule so for example rotating by 10
+degrees about the vertex (0, 0, 1) causes a small counter-clockwise
+rotation.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="angle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Angle in degrees to rotate.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X-component of vertex to rotate around.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y-component of vertex to rotate around.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Z-component of vertex to rotate around.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="scale" c:identifier="cogl_scale">
+      <doc xml:whitespace="preserve">Multiplies the current model-view matrix by one that scales the x,
+y and z axes by the given values.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Amount to scale along the x-axis</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Amount to scale along the y-axis</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Amount to scale along the z-axis</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_backface_culling_enabled"
+              c:identifier="cogl_set_backface_culling_enabled">
+      <doc xml:whitespace="preserve">Sets whether textures positioned so that their backface is showing
+should be hidden. This can be used to efficiently draw two-sided
+textures or fully closed cubes without enabling depth testing. This
+only affects calls to the cogl_rectangle* family of functions and
+cogl_vertex_buffer_draw*. Backface culling is disabled by default.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="setting" transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to enable backface culling or %FALSE to disable.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_depth_test_enabled"
+              c:identifier="cogl_set_depth_test_enabled"
+              deprecated="Use cogl_material_set_depth_test_enabled()"
+              deprecated-version="1.4">
+      <doc xml:whitespace="preserve">Sets whether depth testing is enabled. If it is disabled then the
+order that actors are layered on the screen depends solely on the
+order specified using clutter_actor_raise() and
+clutter_actor_lower(), otherwise it will also take into account the
+actor's depth. Depth testing is disabled by default.
+instead.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="setting" transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to enable depth testing or %FALSE to disable.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_draw_buffer"
+              c:identifier="cogl_set_draw_buffer"
+              deprecated="The target argument was redundant since we could look at"
+              deprecated-version="1.2">
+      <doc xml:whitespace="preserve">Redirects all subsequent drawing to the specified framebuffer. This
+can either be an offscreen buffer created with
+cogl_offscreen_new_to_texture () or you can revert to your original
+on screen window buffer.
+the type of CoglHandle given instead.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglBufferTarget that specifies what kind of framebuffer you are setting as the render target.</doc>
+          <type name="BufferTarget" c:type="CoglBufferTarget"/>
+        </parameter>
+        <parameter name="offscreen" transfer-ownership="none">
+          <doc xml:whitespace="preserve">If you are setting a framebuffer of type COGL_OFFSCREEN_BUFFER then this is a CoglHandle for the offscreen buffer.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_fog" c:identifier="cogl_set_fog">
+      <doc xml:whitespace="preserve">Enables fogging. Fogging causes vertices that are further away from the eye
+to be rendered with a different color. The color is determined according to
+the chosen fog mode; at it's simplest the color is linearly interpolated so
+that vertices at @z_near are drawn fully with their original color and
+vertices at @z_far are drawn fully with @fog_color. Fogging will remain
+enabled until you call cogl_disable_fog().
+&lt;note&gt;The fogging functions only work correctly when primitives use
+unmultiplied alpha colors. By default Cogl will premultiply textures
+and cogl_set_source_color() will premultiply colors, so unless you
+explicitly load your textures requesting an unmultiplied internal format
+and use cogl_material_set_color() you can only use fogging with fully
+opaque primitives. This might improve in the future when we can depend
+on fragment shaders.&lt;/note&gt;</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="fog_color" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The color of the fog</doc>
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+        <parameter name="mode" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglFogMode that determines the equation used to calculate the fogging blend factor.</doc>
+          <type name="FogMode" c:type="CoglFogMode"/>
+        </parameter>
+        <parameter name="density" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Used by %COGL_FOG_MODE_EXPONENTIAL and by %COGL_FOG_MODE_EXPONENTIAL_SQUARED equations.</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="z_near" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Position along Z axis where no fogging should be applied</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="z_far" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Position along Z axis where full fogging should be applied</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_framebuffer"
+              c:identifier="cogl_set_framebuffer"
+              version="1.2">
+      <doc xml:whitespace="preserve">This redirects all subsequent drawing to the specified framebuffer. This can
+either be an offscreen buffer created with cogl_offscreen_new_to_texture ()
+or in the future it may be an onscreen framebuffers too.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglFramebuffer object, either onscreen or offscreen.</doc>
+          <type name="Framebuffer" c:type="CoglFramebuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_modelview_matrix"
+              c:identifier="cogl_set_modelview_matrix">
+      <doc xml:whitespace="preserve">Loads @matrix as the new model-view matrix.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="matrix" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new model-view matrix</doc>
+          <type name="Matrix" c:type="CoglMatrix*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_path"
+              c:identifier="cogl_set_path"
+              version="1.4"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Replaces the current path with @path. A reference is taken on the
+object so if you no longer need the path you should unref with
+cogl_object_unref().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="path" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglPath object</doc>
+          <type name="Path" c:type="CoglPath*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_projection_matrix"
+              c:identifier="cogl_set_projection_matrix">
+      <doc xml:whitespace="preserve">Loads matrix as the new projection matrix.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="matrix" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new projection matrix</doc>
+          <type name="Matrix" c:type="CoglMatrix*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_source" c:identifier="cogl_set_source" version="1.0">
+      <doc xml:whitespace="preserve">This function changes the material at the top of the source stack.
+The material at the top of this stack defines the GPU state used to
+process subsequent primitives, such as rectangles drawn with
+cogl_rectangle() or vertices drawn using cogl_vertex_buffer_draw().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="material" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglMaterial</doc>
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_source_color"
+              c:identifier="cogl_set_source_color"
+              version="1.0">
+      <doc xml:whitespace="preserve">This is a convenience function for creating a solid fill source material
+from the given color. This color will be used for any subsequent drawing
+operation.
+The color will be premultiplied by Cogl, so the color should be
+semi-transparent red.
+See also cogl_set_source_color4ub() and cogl_set_source_color4f()
+if you already have the color components.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="color" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglColor</doc>
+          <type name="Color" c:type="CoglColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_source_color4f"
+              c:identifier="cogl_set_source_color4f"
+              version="1.0">
+      <doc xml:whitespace="preserve">This is a convenience function for creating a solid fill source material
+from the given color using normalized values for each component. This color
+will be used for any subsequent drawing operation.
+The value for each component is a fixed point number in the range
+between 0 and %1.0. If the values passed in are outside that
+range, they will be clamped.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <doc xml:whitespace="preserve">value of the red channel, between 0 and %1.0</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <doc xml:whitespace="preserve">value of the green channel, between 0 and %1.0</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <doc xml:whitespace="preserve">value of the blue channel, between 0 and %1.0</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="alpha" transfer-ownership="none">
+          <doc xml:whitespace="preserve">value of the alpha channel, between 0 and %1.0</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_source_color4ub"
+              c:identifier="cogl_set_source_color4ub"
+              version="1.0">
+      <doc xml:whitespace="preserve">This is a convenience function for creating a solid fill source material
+from the given color using unsigned bytes for each component. This
+color will be used for any subsequent drawing operation.
+The value for each component is an unsigned byte in the range
+between 0 and 255.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <doc xml:whitespace="preserve">value of the red channel, between 0 and 255</doc>
+          <type name="guint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <doc xml:whitespace="preserve">value of the green channel, between 0 and 255</doc>
+          <type name="guint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <doc xml:whitespace="preserve">value of the blue channel, between 0 and 255</doc>
+          <type name="guint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="alpha" transfer-ownership="none">
+          <doc xml:whitespace="preserve">value of the alpha channel, between 0 and 255</doc>
+          <type name="guint8" c:type="guint8"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_source_texture"
+              c:identifier="cogl_set_source_texture"
+              version="1.0">
+      <doc xml:whitespace="preserve">This is a convenience function for creating a material with the first
+layer set to #texture_handle and setting that material as the source with
+cogl_set_source.
+and cogl_set_source_texture. If you need to blend a texture with a color then
+you can create a simple material like this:
+&lt;programlisting&gt;
+material = cogl_material_new ();
+cogl_material_set_color4ub (material, 0xff, 0x00, 0x00, 0x80);
+cogl_material_set_layer (material, 0, tex_handle);
+cogl_set_source (material);
+&lt;/programlisting&gt;</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="texture_handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The Cogl texture you want as your source</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_viewport"
+              c:identifier="cogl_set_viewport"
+              version="1.2">
+      <doc xml:whitespace="preserve">Replaces the current viewport with the given values.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X offset of the viewport</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y offset of the viewport</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Width of the viewport</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Height of the viewport</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shader_compile" c:identifier="cogl_shader_compile">
+      <doc xml:whitespace="preserve">Compiles the shader, no return value, but the shader is now ready for
+linking into a program.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#CoglHandle for a shader.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shader_get_info_log"
+              c:identifier="cogl_shader_get_info_log">
+      <doc xml:whitespace="preserve">Retrieves the information log for a coglobject, can be used in conjunction
+with cogl_shader_get_parameteriv() to retrieve the compiler warnings/error
+messages that caused a shader to not compile correctly, mainly useful for
+debugging purposes.
+g_free() to free it</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a newly allocated string containing the info log. Use</doc>
+        <type name="utf8" c:type="char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#CoglHandle for a shader.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shader_get_type" c:identifier="cogl_shader_get_type">
+      <doc xml:whitespace="preserve">Retrieves the type of a shader #CoglHandle
+or %COGL_SHADER_TYPE_FRAGMENT if the shader is a frament processor</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%COGL_SHADER_TYPE_VERTEX if the shader is a vertex processor</doc>
+        <type name="ShaderType" c:type="CoglShaderType"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#CoglHandle for a shader.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shader_is_compiled" c:identifier="cogl_shader_is_compiled">
+      <doc xml:whitespace="preserve">Retrieves whether a shader #CoglHandle has been compiled</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the shader object has sucessfully be compiled</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#CoglHandle for a shader.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shader_ref"
+              c:identifier="cogl_shader_ref"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Add an extra reference to a shader.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">@handle</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglHandle to a shader.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shader_source" c:identifier="cogl_shader_source">
+      <doc xml:whitespace="preserve">Replaces the current GLSL source associated with a shader with a new
+one.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="shader" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#CoglHandle for a shader.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="source" transfer-ownership="none">
+          <doc xml:whitespace="preserve">GLSL shader source.</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shader_unref" c:identifier="cogl_shader_unref">
+      <doc xml:whitespace="preserve">Removes a reference to a shader. If it was the last reference the
+shader object will be destroyed.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglHandle to a shader.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sqrti" c:identifier="cogl_sqrti" version="1.0">
+      <doc xml:whitespace="preserve">Very fast fixed point implementation of square root for integers.
+This function is at least 6x faster than clib sqrt() on x86, and (this is
+not a typo!) about 500x faster on ARM without FPU. It's error is less than
+5% for arguments smaller than %COGL_SQRTI_ARG_5_PERCENT and less than 10%
+for narguments smaller than %COGL_SQRTI_ARG_10_PERCENT. The maximum
+argument that can be passed to this function is %COGL_SQRTI_ARG_MAX.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">integer square root.</doc>
+        <type name="gint" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">integer value</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_3d_new_from_data_EXP"
+              c:identifier="cogl_texture_3d_new_from_data_EXP"
+              introspectable="0"
+              throws="1">
+      <return-value>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="width" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="depth" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="TextureFlags" c:type="CoglTextureFlags"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+        <parameter name="internal_format" transfer-ownership="none">
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+        <parameter name="rowstride" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="image_stride" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="guint8" c:type="guint8*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_3d_new_with_size_EXP"
+              c:identifier="cogl_texture_3d_new_with_size_EXP"
+              introspectable="0"
+              throws="1">
+      <return-value>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="width" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="depth" transfer-ownership="none">
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="TextureFlags" c:type="CoglTextureFlags"/>
+        </parameter>
+        <parameter name="internal_format" transfer-ownership="none">
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_get_data" c:identifier="cogl_texture_get_data">
+      <doc xml:whitespace="preserve">Copies the pixel data from a cogl texture to system memory.
+is not valid</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the size of the texture data in bytes, or 0 if the texture</doc>
+        <type name="gint" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle for a texture.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #CoglPixelFormat to store the texture as.</doc>
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+        <parameter name="rowstride" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the rowstride of @data or retrieved from texture if none is specified.</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">memory location to write contents of buffer, or %NULL if we're only querying the data size through the return value.</doc>
+          <type name="guint8" c:type="guint8*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_get_format" c:identifier="cogl_texture_get_format">
+      <doc xml:whitespace="preserve">Queries the #CoglPixelFormat of a cogl texture.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the #CoglPixelFormat of the GPU side texture</doc>
+        <type name="PixelFormat" c:type="CoglPixelFormat"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle for a texture.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_get_gl_texture"
+              c:identifier="cogl_texture_get_gl_texture">
+      <doc xml:whitespace="preserve">Queries the GL handles for a GPU side texture through its #CoglHandle.
+If the texture is spliced the data for the first sub texture will be
+queried.
+if the handle was invalid</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the handle was successfully retrieved, %FALSE</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle for a texture.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="out_gl_handle"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">pointer to return location for the textures GL handle, or %NULL.</doc>
+          <type name="GL.uint" c:type="GLuint*"/>
+        </parameter>
+        <parameter name="out_gl_target"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">pointer to return location for the GL target type, or %NULL.</doc>
+          <type name="GL.enum" c:type="GLenum*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_get_height" c:identifier="cogl_texture_get_height">
+      <doc xml:whitespace="preserve">Queries the height of a cogl texture.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the height of the GPU side texture in pixels</doc>
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle for a texture.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_get_max_waste"
+              c:identifier="cogl_texture_get_max_waste">
+      <doc xml:whitespace="preserve">Queries the maximum wasted (unused) pixels in one dimension of a GPU side
+texture.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the maximum waste</doc>
+        <type name="gint" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle for a texture.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_get_rowstride"
+              c:identifier="cogl_texture_get_rowstride">
+      <doc xml:whitespace="preserve">Queries the rowstride of a cogl texture.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the offset in bytes between each consequetive row of pixels</doc>
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle for a texture.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_get_width" c:identifier="cogl_texture_get_width">
+      <doc xml:whitespace="preserve">Queries the width of a cogl texture.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the width of the GPU side texture in pixels</doc>
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle for a texture.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_is_sliced" c:identifier="cogl_texture_is_sliced">
+      <doc xml:whitespace="preserve">Queries if a texture is sliced (stored as multiple GPU side tecture
+objects).
+is stored as a single GPU texture</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the texture is sliced, %FALSE if the texture</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle for a texture.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_new_from_bitmap"
+              c:identifier="cogl_texture_new_from_bitmap"
+              version="1.0"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a COGL texture from a CoglBitmap.
+%COGL_INVALID_HANDLE on failure</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a #CoglHandle to the newly created texture or</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="bmp_handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A CoglBitmap handle</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Optional flags for the texture, or %COGL_TEXTURE_NONE</doc>
+          <type name="TextureFlags" c:type="CoglTextureFlags"/>
+        </parameter>
+        <parameter name="internal_format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #CoglPixelFormat to use for the GPU storage of the texture</doc>
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_new_from_data"
+              c:identifier="cogl_texture_new_from_data"
+              version="0.8"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new COGL texture based on data residing in memory.
+%COGL_INVALID_HANDLE on failure</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a #CoglHandle to the newly created texture or</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">width of texture in pixels</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">height of texture in pixels</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Optional flags for the texture, or %COGL_TEXTURE_NONE</doc>
+          <type name="TextureFlags" c:type="CoglTextureFlags"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #CoglPixelFormat the buffer is stored in in RAM</doc>
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+        <parameter name="internal_format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #CoglPixelFormat that will be used for storing the buffer on the GPU. If COGL_PIXEL_FORMAT_ANY is given then a premultiplied format similar to the format of the source data will be used. The default blending equations of Cogl expect premultiplied color data; the main use of passing a non-premultiplied format here is if you have non-premultiplied source data and are going to adjust the blend mode (see cogl_material_set_blend()) or use the data for something other than straight blending.</doc>
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+        <parameter name="rowstride" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the memory offset in bytes between the starts of scanlines in @data</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">pointer the memory region where the source buffer resides</doc>
+          <type name="guint8" c:type="guint8*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_new_from_file"
+              c:identifier="cogl_texture_new_from_file"
+              version="0.8"
+              introspectable="0"
+              throws="1">
+      <doc xml:whitespace="preserve">Creates a COGL texture from an image file.
+%COGL_INVALID_HANDLE on failure</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a #CoglHandle to the newly created texture or</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="filename" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the file to load</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Optional flags for the texture, or %COGL_TEXTURE_NONE</doc>
+          <type name="TextureFlags" c:type="CoglTextureFlags"/>
+        </parameter>
+        <parameter name="internal_format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #CoglPixelFormat to use for the GPU storage of the texture. If %COGL_PIXEL_FORMAT_ANY is given then a premultiplied format similar to the format of the source data will be used. The default blending equations of Cogl expect premultiplied color data; the main use of passing a non-premultiplied format here is if you have non-premultiplied source data and are going to adjust the blend mode (see cogl_material_set_blend()) or use the data for something other than straight blending.</doc>
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_new_from_foreign"
+              c:identifier="cogl_texture_new_from_foreign"
+              version="0.8"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a COGL texture based on an existing OpenGL texture; the
+width, height and format are passed along since it is not always
+possible to query these from OpenGL.
+The waste arguments allow you to create a Cogl texture that maps to
+a region smaller than the real OpenGL texture. For instance if your
+hardware only supports power-of-two textures you may load a
+non-power-of-two image into a larger power-of-two texture and use
+the waste arguments to tell Cogl which region should be mapped to
+the texture coordinate range [0:1].
+%COGL_INVALID_HANDLE on failure</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a #CoglHandle to the newly created texture or</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="gl_handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">opengl handle of foreign texture.</doc>
+          <type name="GL.uint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="gl_target" transfer-ownership="none">
+          <doc xml:whitespace="preserve">opengl target type of foreign texture</doc>
+          <type name="GL.enum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">width of foreign texture</doc>
+          <type name="GL.uint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">height of foreign texture.</doc>
+          <type name="GL.uint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x_pot_waste" transfer-ownership="none">
+          <doc xml:whitespace="preserve">horizontal waste on the right hand edge of the texture.</doc>
+          <type name="GL.uint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="y_pot_waste" transfer-ownership="none">
+          <doc xml:whitespace="preserve">vertical waste on the bottom edge of the texture.</doc>
+          <type name="GL.uint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">format of the foreign texture.</doc>
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_new_from_sub_texture"
+              c:identifier="cogl_texture_new_from_sub_texture"
+              version="1.2"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new texture which represents a subregion of another
+texture. The GL resources will be shared so that no new texture
+data is actually allocated.
+Sub textures have undefined behaviour texture coordinates outside
+of the range [0,1] are used. They also do not work with
+CoglVertexBuffers.
+The sub texture will keep a reference to the full texture so you do
+not need to keep one separately if you only want to use the sub
+texture.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a #CoglHandle to the new texture.</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="full_texture" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle to an existing texture</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="sub_x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">X coordinate of the top-left of the subregion</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="sub_y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Y coordinate of the top-left of the subregion</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="sub_width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Width in pixels of the subregion</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="sub_height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Height in pixels of the subregion</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_new_with_size"
+              c:identifier="cogl_texture_new_with_size"
+              version="0.8"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new COGL texture with the specified dimensions and pixel format.
+%COGL_INVALID_HANDLE on failure</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a #CoglHandle to the newly created texture or</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">width of texture in pixels.</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">height of texture in pixels.</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Optional flags for the texture, or %COGL_TEXTURE_NONE</doc>
+          <type name="TextureFlags" c:type="CoglTextureFlags"/>
+        </parameter>
+        <parameter name="internal_format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #CoglPixelFormat to use for the GPU storage of the texture.</doc>
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_ref"
+              c:identifier="cogl_texture_ref"
+              introspectable="0"
+              deprecated="Use cogl_handle_ref() instead"
+              deprecated-version="1.2">
+      <doc xml:whitespace="preserve">Increment the reference count for a cogl texture.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the @handle.</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a @CoglHandle.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_set_region" c:identifier="cogl_texture_set_region">
+      <doc xml:whitespace="preserve">Sets the pixels in a rectangular subregion of @handle from an in-memory
+buffer containing pixel data.
+%FALSE otherwise</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the subregion upload was successful, and</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglHandle.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="src_x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">upper left coordinate to use from source data.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="src_y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">upper left coordinate to use from source data.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="dst_x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">upper left destination horizontal coordinate.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="dst_y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">upper left destination vertical coordinate.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="dst_width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">width of destination region to write.</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="dst_height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">height of destination region to write.</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">width of source data buffer.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">height of source data buffer.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #CoglPixelFormat used in the source buffer.</doc>
+          <type name="PixelFormat" c:type="CoglPixelFormat"/>
+        </parameter>
+        <parameter name="rowstride" transfer-ownership="none">
+          <doc xml:whitespace="preserve">rowstride of source buffer (computed from width if none specified)</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the actual pixel data.</doc>
+          <type name="guint8" c:type="guint8*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="texture_unref"
+              c:identifier="cogl_texture_unref"
+              deprecated="Use cogl_handle_unref() instead"
+              deprecated-version="1.2">
+      <doc xml:whitespace="preserve">Decrement the reference count for a cogl texture.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a @CoglHandle.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="transform" c:identifier="cogl_transform" version="1.4">
+      <doc xml:whitespace="preserve">Multiplies the current model-view matrix by the given matrix.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="matrix" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the matrix to multiply with the current model-view</doc>
+          <type name="Matrix" c:type="CoglMatrix*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="translate" c:identifier="cogl_translate">
+      <doc xml:whitespace="preserve">Multiplies the current model-view matrix by one that translates the
+model along all three axes according to the given values.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Distance to translate along the x-axis</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Distance to translate along the y-axis</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Distance to translate along the z-axis</doc>
+          <type name="gfloat" c:type="float"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vector3_equal_EXP" c:identifier="cogl_vector3_equal_EXP">
+      <return-value transfer-ownership="none">
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="v1" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="v2" transfer-ownership="none">
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_array_new"
+              c:identifier="cogl_vertex_array_new"
+              version="1.4"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Declares a new #CoglVertexArray of @size bytes to contain arrays of vertex
+attribute data. Once declared, data can be set using cogl_buffer_set_data()
+or by mapping it into the application's address space using cogl_buffer_map().
+If @data isn't %NULL then @size bytes will be read from @data and
+immediately copied into the new buffer.</doc>
+      <return-value>
+        <type name="VertexArray" c:type="CoglVertexArray*"/>
+      </return-value>
+      <parameters>
+        <parameter name="bytes" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of bytes to allocate for vertex attribute data.</doc>
+          <type name="gsize" c:type="gsize"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">An optional pointer to vertex data to upload immediately.</doc>
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_add" c:identifier="cogl_vertex_buffer_add">
+      <doc xml:whitespace="preserve">Adds an attribute to a buffer, or replaces a previously added
+attribute with the same name.
+You either can use one of the built-in names such as "gl_Vertex", or
+"gl_MultiTexCoord0" to add standard attributes, like positions, colors
+and normals, or you can add custom attributes for use in shaders.
+The number of vertices declared when calling cogl_vertex_buffer_new()
+determines how many attribute values will be read from the supplied
+The data for your attribute isn't copied anywhere until you call
+cogl_vertex_buffer_submit(), or issue a draw call which automatically
+submits pending attribute changes. so the supplied pointer must remain
+valid until then. If you are updating an existing attribute (done by
+re-adding it) then you still need to re-call cogl_vertex_buffer_submit()
+to commit the changes to the GPU. Be carefull to minimize the number
+of calls to cogl_vertex_buffer_submit(), though.
+&lt;note&gt;If you are interleving attributes it is assumed that each interleaved
+attribute starts no farther than +- stride bytes from the other attributes
+it is interleved with. I.e. this is ok:
+&lt;programlisting&gt;
+|-0-0-0-0-0-0-0-0-0-0|
+&lt;/programlisting&gt;
+This is not ok:
+&lt;programlisting&gt;
+|- - - - -0-0-0-0-0-0 0 0 0 0|
+&lt;/programlisting&gt;
+(Though you can have multiple groups of interleved attributes)&lt;/note&gt;</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A vertex buffer handle</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="attribute_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The name of your attribute. It should be a valid GLSL variable name and standard attribute types must use one of following built-in names: (Note: they correspond to the built-in names of GLSL) &lt;itemizedlist&gt; &lt;listitem&gt;"gl_Color"&lt;/listitem&gt; &lt;listitem&gt;"gl_Normal"&lt;/listitem&gt; &lt;listitem&gt;"gl_MultiTexCoord0, gl_MultiTexCoord1, ..."&lt;/listitem&gt; &lt;listitem&gt;"gl_Vertex"&lt;/listitem&gt; &lt;/itemizedlist&gt; To support adding multiple variations of the same attribute the name can have a detail component, E.g. "gl_Color::active" or "gl_Color::inactive"</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="n_components" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of components per attribute and must be 1, 2, 3 or 4</doc>
+          <type name="guint8" c:type="guint8"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglAttributeType specifying the data type of each component.</doc>
+          <type name="AttributeType" c:type="CoglAttributeType"/>
+        </parameter>
+        <parameter name="normalized" transfer-ownership="none">
+          <doc xml:whitespace="preserve">If %TRUE, this specifies that values stored in an integer format should be mapped into the range [-1.0, 1.0] or [0.0, 1.0] for unsigned values. If %FALSE they are converted to floats directly.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="stride" transfer-ownership="none">
+          <doc xml:whitespace="preserve">This specifies the number of bytes from the start of one attribute value to the start of the next value (for the same attribute). So, for example, with a position interleved with color like this: XYRGBAXYRGBAXYRGBA, then if each letter represents a byte, the stride for both attributes is 6. The special value 0 means the values are stored sequentially in memory.</doc>
+          <type name="guint16" c:type="guint16"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <doc xml:whitespace="preserve">This addresses the first attribute in the vertex array. This must remain valid until you either call cogl_vertex_buffer_submit() or issue a draw call.</doc>
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_delete"
+              c:identifier="cogl_vertex_buffer_delete">
+      <doc xml:whitespace="preserve">Deletes an attribute from a buffer. You will need to call
+cogl_vertex_buffer_submit() or issue a draw call to commit this
+change to the GPU.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A vertex buffer handle</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="attribute_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The name of a previously added attribute</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_disable"
+              c:identifier="cogl_vertex_buffer_disable">
+      <doc xml:whitespace="preserve">Disables a previosuly added attribute.
+Since it can be costly to add and remove new attributes to buffers; to make
+individual buffers more reuseable it is possible to enable and disable
+attributes before using a buffer for drawing.
+You don't need to call cogl_vertex_buffer_submit() after using this
+function.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A vertex buffer handle</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="attribute_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The name of the attribute you want to disable</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_draw" c:identifier="cogl_vertex_buffer_draw">
+      <doc xml:whitespace="preserve">Allows you to draw geometry using all or a subset of the
+vertices in a vertex buffer.
+Any un-submitted attribute changes are automatically submitted before
+drawing.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A vertex buffer handle</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="mode" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglVerticesMode specifying how the vertices should be interpreted.</doc>
+          <type name="VerticesMode" c:type="CoglVerticesMode"/>
+        </parameter>
+        <parameter name="first" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Specifies the index of the first vertex you want to draw with</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Specifies the number of vertices you want to draw.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_draw_elements"
+              c:identifier="cogl_vertex_buffer_draw_elements">
+      <doc xml:whitespace="preserve">This function lets you use an array of indices to specify the vertices
+within your vertex buffer that you want to draw. The indices themselves
+are created by calling cogl_vertex_buffer_indices_new ()
+Any un-submitted attribute changes are automatically submitted before
+drawing.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A vertex buffer handle</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="mode" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #CoglVerticesMode specifying how the vertices should be interpreted.</doc>
+          <type name="VerticesMode" c:type="CoglVerticesMode"/>
+        </parameter>
+        <parameter name="indices" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A CoglHandle for a set of indices allocated via cogl_vertex_buffer_indices_new ()</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="min_index" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Specifies the minimum vertex index contained in indices</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="max_index" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Specifies the maximum vertex index contained in indices</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="indices_offset" transfer-ownership="none">
+          <doc xml:whitespace="preserve">An offset into named indices. The offset marks the first index to use for drawing.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Specifies the number of vertices you want to draw.</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_enable"
+              c:identifier="cogl_vertex_buffer_enable">
+      <doc xml:whitespace="preserve">Enables a previosuly disabled attribute.
+Since it can be costly to add and remove new attributes to buffers; to make
+individual buffers more reuseable it is possible to enable and disable
+attributes before using a buffer for drawing.
+You don't need to call cogl_vertex_buffer_submit() after using this function</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A vertex buffer handle</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+        <parameter name="attribute_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The name of the attribute you want to enable</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_get_n_vertices"
+              c:identifier="cogl_vertex_buffer_get_n_vertices">
+      <doc xml:whitespace="preserve">Retrieves the number of vertices that @handle represents</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the number of vertices</doc>
+        <type name="guint" c:type="unsigned int"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A vertex buffer handle</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_indices_get_for_quads"
+              c:identifier="cogl_vertex_buffer_indices_get_for_quads"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a vertex buffer containing the indices needed to draw pairs
+of triangles from a list of vertices grouped as quads. There will
+be at least @n_indices entries in the buffer (but there may be
+more).
+The indices will follow this pattern:
+0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7 ... etc
+For example, if you submit vertices for a quad like like that shown
+in &lt;xref linkend="quad-indices-order"/&gt; then you can request 6
+indices to render two triangles like those shown in &lt;xref
+linkend="quad-indices-triangles"/&gt;.
+&lt;figure id="quad-indices-order"&gt;
+&lt;title&gt;Example of vertices submitted to form a quad&lt;/title&gt;
+&lt;graphic fileref="quad-indices-order.png" format="PNG"/&gt;
+&lt;/figure&gt;
+&lt;figure id="quad-indices-triangles"&gt;
+&lt;title&gt;Illustration of the triangle indices that will be generated&lt;/title&gt;
+&lt;graphic fileref="quad-indices-triangles.png" format="PNG"/&gt;
+&lt;/figure&gt;
+owned by Cogl and should not be modified or unref'd.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">A %CoglHandle containing the indices. The handled is</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="n_indices" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of indices in the vertex buffer.</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_indices_get_type"
+              c:identifier="cogl_vertex_buffer_indices_get_type">
+      <doc xml:whitespace="preserve">Queries back the data type used for the given indices</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The CoglIndicesType used</doc>
+        <type name="IndicesType" c:type="CoglIndicesType"/>
+      </return-value>
+      <parameters>
+        <parameter name="indices" transfer-ownership="none">
+          <doc xml:whitespace="preserve">An indices handle</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_indices_new"
+              c:identifier="cogl_vertex_buffer_indices_new"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Depending on how much geometry you are submitting it can be worthwhile
+optimizing the number of redundant vertices you submit. Using an index
+array allows you to reference vertices multiple times, for example
+during triangle strips.
+cogl_vertex_buffer_draw_elements().</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">A CoglHandle for the indices which you can pass to</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="indices_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #CoglIndicesType specifying the data type used for the indices.</doc>
+          <type name="IndicesType" c:type="CoglIndicesType"/>
+        </parameter>
+        <parameter name="indices_array" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Specifies the address of your array of indices</doc>
+          <array length="2" c:type="void*">
+            <type name="gpointer" c:type="void"/>
+          </array>
+        </parameter>
+        <parameter name="indices_len" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of indices in indices_array</doc>
+          <type name="gint" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_new"
+              c:identifier="cogl_vertex_buffer_new"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new vertex buffer that you can use to add attributes.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a new #CoglHandle</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="n_vertices" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of vertices that your attributes will correspond to.</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_ref"
+              c:identifier="cogl_vertex_buffer_ref"
+              introspectable="0"
+              deprecated="Use cogl_handle_ref() instead"
+              deprecated-version="1.2">
+      <doc xml:whitespace="preserve">Increment the reference count for a vertex buffer</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the @handle.</doc>
+        <type name="Handle" c:type="CoglHandle"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a @CoglHandle.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_submit"
+              c:identifier="cogl_vertex_buffer_submit">
+      <doc xml:whitespace="preserve">Submits all the user added attributes to the GPU; once submitted, the
+attributes can be used for drawing.
+You should aim to minimize calls to this function since it implies
+validating your data; it potentially incurs a transport cost (especially if
+you are using GLX indirect rendering) and potentially a format conversion
+cost if the GPU doesn't natively support any of the given attribute formats.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A vertex buffer handle</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="vertex_buffer_unref"
+              c:identifier="cogl_vertex_buffer_unref"
+              deprecated="Use cogl_handle_unref() instead"
+              deprecated-version="1.2">
+      <doc xml:whitespace="preserve">Decrement the reference count for a vertex buffer</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="handle" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a @CoglHandle.</doc>
+          <type name="Handle" c:type="CoglHandle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="viewport"
+              c:identifier="cogl_viewport"
+              version="0.8.2"
+              deprecated="Use cogl_set_viewport() instead"
+              deprecated-version="1.2">
+      <doc xml:whitespace="preserve">Replace the current viewport with the given values.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="width" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Width of the viewport</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Height of the viewport</doc>
+          <type name="guint" c:type="unsigned int"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/clutter/gtk/GtkClutter-1.0.gir b/extra/clutter/gtk/GtkClutter-1.0.gir
new file mode 100644 (file)
index 0000000..1df4320
--- /dev/null
@@ -0,0 +1,577 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.2"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="Atk" version="1.0"/>
+  <include name="Clutter" version="1.0"/>
+  <include name="Cogl" version="1.0"/>
+  <include name="GL" version="1.0"/>
+  <include name="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gdk" version="3.0"/>
+  <include name="GdkPixbuf" version="2.0"/>
+  <include name="Gio" version="2.0"/>
+  <include name="Gtk" version="3.0"/>
+  <include name="Json" version="1.0"/>
+  <include name="Pango" version="1.0"/>
+  <include name="PangoCairo" version="1.0"/>
+  <include name="PangoFT2" version="1.0"/>
+  <include name="cairo" version="1.0"/>
+  <include name="fontconfig" version="2.0"/>
+  <include name="freetype2" version="2.0"/>
+  <package name="clutter-gtk-1.0"/>
+  <c:include name="clutter-gtk/clutter-gtk.h"/>
+  <namespace name="GtkClutter"
+             version="1.0"
+             shared-library="libclutter-gtk-1.0.so.0"
+             c:identifier-prefixes="GtkClutter"
+             c:symbol-prefixes="gtk_clutter">
+    <class name="Actor"
+           c:symbol-prefix="actor"
+           c:type="GtkClutterActor"
+           parent="Clutter.Actor"
+           glib:type-name="GtkClutterActor"
+           glib:get-type="gtk_clutter_actor_get_type"
+           glib:type-struct="ActorClass">
+      <doc xml:whitespace="preserve">A ClutterActor containing a #GtkWidget.</doc>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Clutter.Animatable"/>
+      <implements name="Clutter.Container"/>
+      <implements name="Clutter.Scriptable"/>
+      <constructor name="new" c:identifier="gtk_clutter_actor_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkClutterActor.
+This widget can be used to embed a #GtkWidget into a Clutter scene,
+by retrieving the internal #GtkBin container using
+gtk_clutter_actor_get_widget() and adding the #GtkWidget to it.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #GtkClutterActor</doc>
+          <type name="Clutter.Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_contents"
+                   c:identifier="gtk_clutter_actor_new_with_contents">
+        <doc xml:whitespace="preserve">Creates a new #GtkClutterActor widget. This widget can be
+used to embed a Gtk widget into a clutter scene.
+This function is the logical equivalent of:
+|[
+ClutterActor *actor = gtk_clutter_actor_new ();
+GtkWidget *bin = gtk_clutter_actor_get_widget (GTK_CLUTTER_ACTOR (actor));
+gtk_container_add (GTK_CONTAINER (bin), contents);
+]|</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #GtkClutterActor</doc>
+          <type name="Clutter.Actor" c:type="ClutterActor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="contents" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkWidget to pack into this #ClutterActor</doc>
+            <type name="Gtk.Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_contents"
+              c:identifier="gtk_clutter_actor_get_contents">
+        <doc xml:whitespace="preserve">Retrieves the child of the #GtkBin used to hold the contents of @actor.
+This convenience function is the logical equivalent of:
+|[
+GtkWidget *bin;
+bin = gtk_clutter_actor_get_widget (GTK_CLUTTER_ACTOR (actor));
+return gtk_bin_get_child (GTK_BIN (bin));
+]|
+has been set</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkWidget, or %NULL if not content</doc>
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_widget" c:identifier="gtk_clutter_actor_get_widget">
+        <doc xml:whitespace="preserve">Retrieves the #GtkBin used to hold the #GtkClutterActor:contents widget</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GtkBin</doc>
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <property name="contents"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #GtkWidget to be embedded into the #GtkClutterActor</doc>
+        <type name="Gtk.Widget"/>
+      </property>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="Clutter.Actor" c:type="ClutterActor"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="ActorPrivate" c:type="GtkClutterActorPrivate*"/>
+      </field>
+    </class>
+    <record name="ActorClass"
+            c:type="GtkClutterActorClass"
+            glib:is-gtype-struct-for="Actor">
+      <doc xml:whitespace="preserve">Base class for #GtkClutterActor.</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="Clutter.ActorClass" c:type="ClutterActorClass"/>
+      </field>
+      <field name="_clutter_gtk_reserved1" introspectable="0">
+        <callback name="_clutter_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_gtk_reserved2" introspectable="0">
+        <callback name="_clutter_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_gtk_reserved3" introspectable="0">
+        <callback name="_clutter_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_gtk_reserved4" introspectable="0">
+        <callback name="_clutter_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_gtk_reserved5" introspectable="0">
+        <callback name="_clutter_gtk_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_gtk_reserved6" introspectable="0">
+        <callback name="_clutter_gtk_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ActorPrivate" c:type="GtkClutterActorPrivate" disguised="1">
+    </record>
+    <class name="Embed"
+           c:symbol-prefix="embed"
+           c:type="GtkClutterEmbed"
+           parent="Gtk.Container"
+           glib:type-name="GtkClutterEmbed"
+           glib:get-type="gtk_clutter_embed_get_type"
+           glib:type-struct="EmbedClass">
+      <doc xml:whitespace="preserve">A #GtkWidget containing the default Clutter stage.
+The &lt;structname&gt;GtkClutterEmbed&lt;/structname&gt; structure contains only
+private data and should be accessed using the provided API.</doc>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Gtk.Buildable"/>
+      <constructor name="new" c:identifier="gtk_clutter_embed_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkClutterEmbed widget. This widget can be
+used to build a scene using Clutter API into a GTK+ application.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #GtkClutterEmbed</doc>
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <method name="get_stage" c:identifier="gtk_clutter_embed_get_stage">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterStage from @embed. The returned stage can be
+used to add actors to the Clutter scene.
+destroy or unref the returned actor.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the Clutter stage. You should never</doc>
+          <type name="Clutter.Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="Gtk.Container" c:type="GtkContainer"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="EmbedPrivate" c:type="GtkClutterEmbedPrivate*"/>
+      </field>
+    </class>
+    <record name="EmbedClass"
+            c:type="GtkClutterEmbedClass"
+            glib:is-gtype-struct-for="Embed">
+      <doc xml:whitespace="preserve">Base class for #GtkClutterEmbed.
+The &lt;structname&gt;GtkClutterEmbedClass&lt;/structname&gt; contains only private
+data.</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="Gtk.ContainerClass" c:type="GtkContainerClass"/>
+      </field>
+      <field name="_clutter_gtk_reserved1" introspectable="0">
+        <callback name="_clutter_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_gtk_reserved2" introspectable="0">
+        <callback name="_clutter_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_gtk_reserved3" introspectable="0">
+        <callback name="_clutter_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_gtk_reserved4" introspectable="0">
+        <callback name="_clutter_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_gtk_reserved5" introspectable="0">
+        <callback name="_clutter_gtk_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_gtk_reserved6" introspectable="0">
+        <callback name="_clutter_gtk_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="EmbedPrivate" c:type="GtkClutterEmbedPrivate" disguised="1">
+    </record>
+    <class name="Texture"
+           c:symbol-prefix="texture"
+           c:type="GtkClutterTexture"
+           version="1.0"
+           parent="Clutter.Texture"
+           glib:type-name="GtkClutterTexture"
+           glib:get-type="gtk_clutter_texture_get_type"
+           glib:type-struct="TextureClass">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;GtkClutterTexture&lt;/structname&gt; structure contains
+only private data and should be accessed using the provided API.</doc>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Clutter.Animatable"/>
+      <implements name="Clutter.Scriptable"/>
+      <constructor name="new"
+                   c:identifier="gtk_clutter_texture_new"
+                   version="1.0">
+        <doc xml:whitespace="preserve">Creates a new #GtkClutterTexture actor.
+instance</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #GtkClutterTexture</doc>
+          <type name="Clutter.Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </constructor>
+      <function name="error_quark"
+                c:identifier="gtk_clutter_texture_error_quark">
+        <return-value transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </return-value>
+      </function>
+      <method name="set_from_icon_name"
+              c:identifier="gtk_clutter_texture_set_from_icon_name"
+              version="1.0"
+              throws="1">
+        <doc xml:whitespace="preserve">Sets the contents of @texture using the @icon_name from the
+current icon theme.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, %FALSE on failure</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #GtkWidget or %NULL</doc>
+            <type name="Gtk.Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="icon_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the icon</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="icon_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the icon size or -1</doc>
+            <type name="Gtk.IconSize" c:type="GtkIconSize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_pixbuf"
+              c:identifier="gtk_clutter_texture_set_from_pixbuf"
+              throws="1">
+        <doc xml:whitespace="preserve">Sets the contents of @texture with a copy of @pixbuf.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, %FALSE on failure.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixbuf" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GdkPixbuf</doc>
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_stock"
+              c:identifier="gtk_clutter_texture_set_from_stock"
+              throws="1">
+        <doc xml:whitespace="preserve">Sets the contents of @texture using the stock icon @stock_id, as
+rendered by @widget.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, %FALSE on failure.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GtkWidget</doc>
+            <type name="Gtk.Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="stock_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the stock id of the icon</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="icon_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the size of the icon, or -1</doc>
+            <type name="Gtk.IconSize" c:type="GtkIconSize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="Clutter.Texture" c:type="ClutterTexture"/>
+      </field>
+    </class>
+    <record name="TextureClass"
+            c:type="GtkClutterTextureClass"
+            glib:is-gtype-struct-for="Texture"
+            version="1.0">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;GtkClutterTextureClass&lt;/structname&gt; structure contains
+only private data.</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="Clutter.TextureClass" c:type="ClutterTextureClass"/>
+      </field>
+    </record>
+    <enumeration name="TextureError"
+                 version="1.0"
+                 c:type="GtkClutterTextureError">
+      <doc xml:whitespace="preserve">Error enumeration for #GtkClutterTexture</doc>
+      <member name="texture_error_invalid_stock_id"
+              value="0"
+              c:identifier="GTK_CLUTTER_TEXTURE_ERROR_INVALID_STOCK_ID"/>
+    </enumeration>
+    <class name="Window"
+           c:symbol-prefix="window"
+           c:type="GtkClutterWindow"
+           parent="Gtk.Window"
+           glib:type-name="GtkClutterWindow"
+           glib:get-type="gtk_clutter_window_get_type"
+           glib:type-struct="WindowClass">
+      <doc xml:whitespace="preserve">A #GtkWindow containing a #ClutterStage.
+The &lt;structname&gt;GtkClutterWindow&lt;/structname&gt; structure contains only
+private data and it should be accessed using the provided API.</doc>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Gtk.Buildable"/>
+      <constructor name="new" c:identifier="gtk_clutter_window_new">
+        <doc xml:whitespace="preserve">Creates a new #GtkClutterWindow widget.
+This window provides a hidden #ClutterStage on which the child
+#GtkWidget&lt;!-- --&gt;s are placed. This allows other #ClutterActor&lt;!-- --&gt;s
+to also be placed on the stage.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly created #GtkClutterWindow</doc>
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <method name="get_stage" c:identifier="gtk_clutter_window_get_stage">
+        <doc xml:whitespace="preserve">Retrieves the #ClutterStage that this window is embedding
+Use this function if you wish to add other actors to the #ClutterStage.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the window's #ClutterStage</doc>
+          <type name="Clutter.Actor" c:type="ClutterActor*"/>
+        </return-value>
+      </method>
+      <field name="parent_instance" readable="0" private="1">
+        <type name="Gtk.Window" c:type="GtkWindow"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="WindowPrivate" c:type="GtkClutterWindowPrivate*"/>
+      </field>
+    </class>
+    <record name="WindowClass"
+            c:type="GtkClutterWindowClass"
+            glib:is-gtype-struct-for="Window">
+      <doc xml:whitespace="preserve">Base class for #GtkClutterWindow.
+The &lt;structname&gt;GtkClutterWindowClass&lt;/structname&gt; structure contains
+only private data.</doc>
+      <field name="parent_class" readable="0" private="1">
+        <type name="Gtk.WindowClass" c:type="GtkWindowClass"/>
+      </field>
+      <field name="_clutter_gtk_reserved1" introspectable="0">
+        <callback name="_clutter_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_gtk_reserved2" introspectable="0">
+        <callback name="_clutter_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_gtk_reserved3" introspectable="0">
+        <callback name="_clutter_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_gtk_reserved4" introspectable="0">
+        <callback name="_clutter_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_gtk_reserved5" introspectable="0">
+        <callback name="_clutter_gtk_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_clutter_gtk_reserved6" introspectable="0">
+        <callback name="_clutter_gtk_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="WindowPrivate"
+            c:type="GtkClutterWindowPrivate"
+            disguised="1">
+    </record>
+    <function name="get_option_group"
+              c:identifier="gtk_clutter_get_option_group"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Returns a #GOptionGroup for the command line arguments recognized
+by Clutter. You should add this group to your #GOptionContext with
+g_option_context_add_group(), if you are using g_option_context_parse()
+to parse your commandline arguments instead of using gtk_clutter_init()
+or gtk_clutter_init_with_args().
+You should add this option group to your #GOptionContext after
+the GTK option group created with gtk_get_option_group(), and after
+the clutter option group obtained from clutter_get_option_group_without_init().
+You should not use clutter_get_option_group() together with this function.
+You must pass %TRUE to gtk_get_option_group() since gtk-clutter's option
+group relies on it.
+Parsing options using g_option_context_parse() with a #GOptionContext
+containing the returned #GOptionGroupwith will result in Clutter's and
+GTK-Clutter's initialisation.  That is, the following code:
+|[
+g_option_context_add_group (context, gtk_get_option_group (TRUE));
+g_option_context_add_group (context, cogl_get_option_group ());
+g_option_context_add_group (context, clutter_get_option_group_without_init ());
+g_option_context_add_group (context, gtk_clutter_get_option_group ());
+res = g_option_context_parse (context, &amp;amp;argc, &amp;amp;argc, NULL);
+]|
+is functionally equivalent to:
+|[
+gtk_clutter_init (&amp;amp;argc, &amp;amp;argv);
+]|
+After g_option_context_parse() on a #GOptionContext containing the
+the returned #GOptionGroup has returned %TRUE, Clutter and GTK-Clutter are
+guaranteed to be initialized.
+recognized by ClutterGtk</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a #GOptionGroup for the commandline arguments</doc>
+        <type name="GLib.OptionGroup" c:type="GOptionGroup*"/>
+      </return-value>
+    </function>
+    <function name="init" c:identifier="gtk_clutter_init">
+      <doc xml:whitespace="preserve">This function should be called instead of clutter_init() and
+gtk_init().
+on failure.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%CLUTTER_INIT_SUCCESS on success, a negative integer</doc>
+        <type name="Clutter.InitError" c:type="ClutterInitError"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">pointer to the arguments count, or %NULL</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+        <parameter name="argv"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">pointer to the arguments vector, or %NULL</doc>
+          <array length="0" c:type="char***">
+            <type name="utf8" c:type="char**"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="init_with_args"
+              c:identifier="gtk_clutter_init_with_args"
+              throws="1">
+      <doc xml:whitespace="preserve">This function should be called instead of clutter_init() and
+gtk_init_with_args().
+on failure.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%CLUTTER_INIT_SUCCESS on success, a negative integer</doc>
+        <type name="Clutter.InitError" c:type="ClutterInitError"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">a pointer to the number of command line arguments, or %NULL</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+        <parameter name="argv"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">a pointer to the array of command line arguments, or %NULL</doc>
+          <array length="0" c:type="char***">
+            <type name="utf8" c:type="char**"/>
+          </array>
+        </parameter>
+        <parameter name="parameter_string"
+                   transfer-ownership="none"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">a string which is displayed in the first line of &lt;option&gt;--help&lt;/option&gt; output, after &lt;literal&gt;&lt;replaceable&gt;programname&lt;/replaceable&gt; [OPTION...]&lt;/literal&gt;</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="entries" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a %NULL-terminated array of #GOptionEntry&lt;!-- --&gt;s describing the options of your program</doc>
+          <type name="GLib.OptionEntry" c:type="GOptionEntry*"/>
+        </parameter>
+        <parameter name="translation_domain"
+                   transfer-ownership="none"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">a translation domain to use for translating the &lt;option&gt;--help&lt;/option&gt; output for the options in @entries with gettext(), or %NULL</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
index 4c64071a04ac553a2a7fe52e3275ee9f716f76db..26b3820b27e6620c4ed26edad5b6938df3e5795f 100644 (file)
@@ -15,9 +15,9 @@ LIBRARY: clutter.gtk
 "clutter.gtk" {
     { [ os winnt? ] [ drop ] }
     { [ os macosx? ] [ drop ] }
-    { [ os unix? ] [ "libclutter-gtk-0.10.so" cdecl add-library ] }
+    { [ os unix? ] [ "libclutter-gtk-1.0.so" cdecl add-library ] }
 } cond
 >>
 
-GIR: GtkClutter-0.10.gir
+GIR: GtkClutter-1.0.gir
 
diff --git a/extra/clutter/json/Json-1.0.gir b/extra/clutter/json/Json-1.0.gir
new file mode 100644 (file)
index 0000000..c79cb6d
--- /dev/null
@@ -0,0 +1,2939 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.2"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="GLib" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gio" version="2.0"/>
+  <package name="json-glib-1.0"/>
+  <c:include name="json-glib/json-glib.h"/>
+  <namespace name="Json"
+             version="1.0"
+             shared-library="libjson-glib-1.0.so.0"
+             c:identifier-prefixes="Json"
+             c:symbol-prefixes="json">
+    <record name="Array"
+            c:type="JsonArray"
+            glib:type-name="JsonArray"
+            glib:get-type="json_array_get_type"
+            c:symbol-prefix="array">
+      <doc xml:whitespace="preserve">A JSON array type. The contents of the #JsonArray structure are private
+and should only be accessed by the provided API</doc>
+      <constructor name="new" c:identifier="json_array_new">
+        <doc xml:whitespace="preserve">Creates a new #JsonArray.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #JsonArray</doc>
+          <type name="Array" c:type="JsonArray*"/>
+        </return-value>
+      </constructor>
+      <constructor name="sized_new" c:identifier="json_array_sized_new">
+        <doc xml:whitespace="preserve">Creates a new #JsonArray with @n_elements slots already allocated.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #JsonArray</doc>
+          <type name="Array" c:type="JsonArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_elements" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of slots to pre-allocate</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="add_array_element"
+              c:identifier="json_array_add_array_element"
+              version="0.8">
+        <doc xml:whitespace="preserve">Conveniently adds an array into @array. The @array takes ownership
+of the newly added #JsonArray</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #JsonArray</doc>
+            <type name="Array" c:type="JsonArray*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_boolean_element"
+              c:identifier="json_array_add_boolean_element"
+              version="0.8">
+        <doc xml:whitespace="preserve">Conveniently adds a boolean @value into @array</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a boolean value</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_double_element"
+              c:identifier="json_array_add_double_element"
+              version="0.8">
+        <doc xml:whitespace="preserve">Conveniently adds a floating point @value into @array</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a floating point value</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_element" c:identifier="json_array_add_element">
+        <doc xml:whitespace="preserve">Appends @node inside @array. The array will take ownership of the
+#JsonNode.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #JsonNode</doc>
+            <type name="Node" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_int_element"
+              c:identifier="json_array_add_int_element"
+              version="0.8">
+        <doc xml:whitespace="preserve">Conveniently adds an integer @value into @array</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an integer value</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_null_element"
+              c:identifier="json_array_add_null_element"
+              version="0.8">
+        <doc xml:whitespace="preserve">Conveniently adds a null element into @array</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="add_object_element"
+              c:identifier="json_array_add_object_element"
+              version="0.8">
+        <doc xml:whitespace="preserve">Conveniently adds an object into @array. The @array takes ownership
+of the newly added #JsonObject</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #JsonObject</doc>
+            <type name="Object" c:type="JsonObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_string_element"
+              c:identifier="json_array_add_string_element"
+              version="0.8">
+        <doc xml:whitespace="preserve">Conveniently adds a string @value into @array</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string value</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dup_element"
+              c:identifier="json_array_dup_element"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves a copy of the #JsonNode containing the value of the
+element at @index_ inside a #JsonArray
+index. Use json_node_free() when done.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a copy of the #JsonNode at the requested</doc>
+          <type name="Node" c:type="JsonNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of the element to retrieve</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="foreach_element"
+              c:identifier="json_array_foreach_element"
+              version="0.8">
+        <doc xml:whitespace="preserve">Iterates over all elements of @array and calls @func on
+each one of them.
+It is safe to change the value of a #JsonNode of the @array
+from within the iterator @func, but it is not safe to add or
+remove elements from the @array.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">the function to be called on each element</doc>
+            <type name="ArrayForeach" c:type="JsonArrayForeach"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to be passed to the function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_array_element"
+              c:identifier="json_array_get_array_element"
+              version="0.8">
+        <doc xml:whitespace="preserve">Conveniently retrieves the array from the element at @index_
+inside @array</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the array</doc>
+          <type name="Array" c:type="JsonArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of the element to retrieve</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_boolean_element"
+              c:identifier="json_array_get_boolean_element"
+              version="0.8">
+        <doc xml:whitespace="preserve">Conveniently retrieves the boolean value of the element at @index_
+inside @array</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the integer value</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of the element to retrieve</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_double_element"
+              c:identifier="json_array_get_double_element"
+              version="0.8">
+        <doc xml:whitespace="preserve">Conveniently retrieves the floating point value of the element at</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the floating point value</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of the element to retrieve</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_element" c:identifier="json_array_get_element">
+        <doc xml:whitespace="preserve">Retrieves the #JsonNode containing the value of the element at @index_
+inside a #JsonArray.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to the #JsonNode at the requested index</doc>
+          <type name="Node" c:type="JsonNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of the element to retrieve</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_elements" c:identifier="json_array_get_elements">
+        <doc xml:whitespace="preserve">Gets the elements of a #JsonArray as a list of #JsonNode&lt;!-- --&gt;s.
+containing the elements of the array. The contents of the list are
+owned by the array and should never be modified or freed. Use
+g_list_free() on the returned list when done using it</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a #GList</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="Node"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_int_element"
+              c:identifier="json_array_get_int_element"
+              version="0.8">
+        <doc xml:whitespace="preserve">Conveniently retrieves the integer value of the element at @index_
+inside @array</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the integer value</doc>
+          <type name="gint64" c:type="gint64"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of the element to retrieve</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_length" c:identifier="json_array_get_length">
+        <doc xml:whitespace="preserve">Retrieves the length of a #JsonArray</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the length of the array</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_null_element"
+              c:identifier="json_array_get_null_element"
+              version="0.8">
+        <doc xml:whitespace="preserve">Conveniently retrieves whether the element at @index_ is set to null</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the element is null</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of the element to retrieve</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_object_element"
+              c:identifier="json_array_get_object_element"
+              version="0.8">
+        <doc xml:whitespace="preserve">Conveniently retrieves the object from the element at @index_
+inside @array</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the object</doc>
+          <type name="Object" c:type="JsonObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of the element to retrieve</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_string_element"
+              c:identifier="json_array_get_string_element"
+              version="0.8">
+        <doc xml:whitespace="preserve">Conveniently retrieves the string value of the element at @index_
+inside @array
+the #JsonArray and should not be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the string value; the returned string is owned by</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of the element to retrieve</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ref" c:identifier="json_array_ref">
+        <doc xml:whitespace="preserve">Increase by one the reference count of a #JsonArray.
+increased by one.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the passed #JsonArray, with the reference count</doc>
+          <type name="Array" c:type="JsonArray*"/>
+        </return-value>
+      </method>
+      <method name="remove_element" c:identifier="json_array_remove_element">
+        <doc xml:whitespace="preserve">Removes the #JsonNode inside @array at @index_ freeing its allocated
+resources.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position of the element to be removed</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unref" c:identifier="json_array_unref">
+        <doc xml:whitespace="preserve">Decreases by one the reference count of a #JsonArray. If the
+reference count reaches zero, the array is destroyed and all
+its allocated resources are freed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <callback name="ArrayForeach" c:type="JsonArrayForeach" version="0.8">
+      <doc xml:whitespace="preserve">The function to be passed to json_array_foreach_element(). You
+should not add or remove elements to and from @array within
+this function. It is safe to change the value of @element_node.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the iterated #JsonArray</doc>
+          <type name="Array" c:type="JsonArray*"/>
+        </parameter>
+        <parameter name="index_" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the index of the element</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="element_node" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #JsonNode containing the value at @index_</doc>
+          <type name="Node" c:type="JsonNode*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <doc xml:whitespace="preserve">data passed to the function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="BoxedDeserializeFunc"
+              c:type="JsonBoxedDeserializeFunc"
+              version="0.10"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Deserializes the contents of the passed #JsonNode into a #GBoxed</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the newly created boxed type</doc>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="node" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #JsonNode</doc>
+          <type name="Node" c:type="JsonNode*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="BoxedSerializeFunc"
+              c:type="JsonBoxedSerializeFunc"
+              version="0.10">
+      <doc xml:whitespace="preserve">Serializes the passed #GBoxed and stores it inside a #JsonNode</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">the newly created #JsonNode</doc>
+        <type name="Node" c:type="JsonNode*"/>
+      </return-value>
+      <parameters>
+        <parameter name="boxed" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GBoxed</doc>
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="Builder"
+           c:symbol-prefix="builder"
+           c:type="JsonBuilder"
+           version="0.12"
+           parent="GObject.Object"
+           glib:type-name="JsonBuilder"
+           glib:get-type="json_builder_get_type"
+           glib:type-struct="BuilderClass">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;JsonBuilder&lt;/structname&gt; structure contains only
+private data and shouls be accessed using the provided API</doc>
+      <constructor name="new" c:identifier="json_builder_new">
+        <doc xml:whitespace="preserve">Creates a new #JsonBuilder. You can use this object to generate a
+JSON tree and obtain the root #JsonNode&lt;!-- --&gt;s.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #JsonBuilder instance</doc>
+          <type name="Builder" c:type="JsonBuilder*"/>
+        </return-value>
+      </constructor>
+      <method name="add_boolean_value"
+              c:identifier="json_builder_add_boolean_value">
+        <doc xml:whitespace="preserve">If called after json_builder_set_member_name(), sets @value as member of the
+most recent opened object, otherwise @value is added as element of the most
+recent opened array.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
+          <type name="Builder" c:type="JsonBuilder*"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the member or element</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_double_value"
+              c:identifier="json_builder_add_double_value">
+        <doc xml:whitespace="preserve">If called after json_builder_set_member_name(), sets @value as member of the
+most recent opened object, otherwise @value is added as element of the most
+recent opened array.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
+          <type name="Builder" c:type="JsonBuilder*"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the member or element</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_int_value" c:identifier="json_builder_add_int_value">
+        <doc xml:whitespace="preserve">If called after json_builder_set_member_name(), sets @value as member of the
+most recent opened object, otherwise @value is added as element of the most
+recent opened array.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
+          <type name="Builder" c:type="JsonBuilder*"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the member or element</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_null_value" c:identifier="json_builder_add_null_value">
+        <doc xml:whitespace="preserve">If called after json_builder_set_member_name(), sets null as member of the
+most recent opened object, otherwise null is added as element of the most
+recent opened array.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
+          <type name="Builder" c:type="JsonBuilder*"/>
+        </return-value>
+      </method>
+      <method name="add_string_value"
+              c:identifier="json_builder_add_string_value">
+        <doc xml:whitespace="preserve">If called after json_builder_set_member_name(), sets @value as member of the
+most recent opened object, otherwise @value is added as element of the most
+recent opened array.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
+          <type name="Builder" c:type="JsonBuilder*"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the member or element</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_value" c:identifier="json_builder_add_value">
+        <doc xml:whitespace="preserve">If called after json_builder_set_member_name(), sets @node as member of the
+most recent opened object, otherwise @node is added as element of the most
+recent opened array.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
+          <type name="Builder" c:type="JsonBuilder*"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the member or element</doc>
+            <type name="Node" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="begin_array" c:identifier="json_builder_begin_array">
+        <doc xml:whitespace="preserve">Opens a subarray inside the given @builder. When done adding members to
+the subarray, json_builder_end_array() must be called.
+Can be called for first or only if the call is associated to an object member
+or an array element.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
+          <type name="Builder" c:type="JsonBuilder*"/>
+        </return-value>
+      </method>
+      <method name="begin_object" c:identifier="json_builder_begin_object">
+        <doc xml:whitespace="preserve">Opens a subobject inside the given @builder. When done adding members to
+the subobject, json_builder_end_object() must be called.
+Can be called for first or only if the call is associated to an object member
+or an array element.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
+          <type name="Builder" c:type="JsonBuilder*"/>
+        </return-value>
+      </method>
+      <method name="end_array" c:identifier="json_builder_end_array">
+        <doc xml:whitespace="preserve">Closes the subarray inside the given @builder that was opened by the most
+recent call to json_builder_begin_array().
+Cannot be called after json_builder_set_member_name().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
+          <type name="Builder" c:type="JsonBuilder*"/>
+        </return-value>
+      </method>
+      <method name="end_object" c:identifier="json_builder_end_object">
+        <doc xml:whitespace="preserve">Closes the subobject inside the given @builder that was opened by the most
+recent call to json_builder_begin_object().
+Cannot be called after json_builder_set_member_name().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
+          <type name="Builder" c:type="JsonBuilder*"/>
+        </return-value>
+      </method>
+      <method name="get_root" c:identifier="json_builder_get_root">
+        <doc xml:whitespace="preserve">Returns the root of the current constructed tree, if the build is complete
+(ie: all opened objects, object members and arrays are being closed).
+Free the returned value with json_node_free().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #JsonNode, or %NULL if the build is not complete.</doc>
+          <type name="Node" c:type="JsonNode*"/>
+        </return-value>
+      </method>
+      <method name="reset" c:identifier="json_builder_reset">
+        <doc xml:whitespace="preserve">Resets the state of the @builder back to its initial state.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_member_name"
+              c:identifier="json_builder_set_member_name">
+        <doc xml:whitespace="preserve">Set the name of the next member in an object. The next call must add a value,
+open an object or an array.
+Can be called only if the call is associated to an object.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
+          <type name="Builder" c:type="JsonBuilder*"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="BuilderPrivate" c:type="JsonBuilderPrivate*"/>
+      </field>
+    </class>
+    <record name="BuilderClass"
+            c:type="JsonBuilderClass"
+            glib:is-gtype-struct-for="Builder"
+            version="0.12">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;JsonBuilder&lt;/structname&gt; structure contains only
+private data</doc>
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_json_reserved1" introspectable="0">
+        <callback name="_json_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_json_reserved2" introspectable="0">
+        <callback name="_json_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="BuilderPrivate" c:type="JsonBuilderPrivate" disguised="1">
+    </record>
+    <class name="Generator"
+           c:symbol-prefix="generator"
+           c:type="JsonGenerator"
+           parent="GObject.Object"
+           glib:type-name="JsonGenerator"
+           glib:get-type="json_generator_get_type"
+           glib:type-struct="GeneratorClass">
+      <doc xml:whitespace="preserve">JSON data streams generator. The contents of the #JsonGenerator structure
+are private and should only be accessed via the provided API.</doc>
+      <constructor name="new" c:identifier="json_generator_new">
+        <doc xml:whitespace="preserve">Creates a new #JsonGenerator. You can use this object to generate a
+JSON data stream starting from a data object model composed by
+#JsonNode&lt;!-- --&gt;s.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #JsonGenerator instance</doc>
+          <type name="Generator" c:type="JsonGenerator*"/>
+        </return-value>
+      </constructor>
+      <method name="set_root" c:identifier="json_generator_set_root">
+        <doc xml:whitespace="preserve">Sets @node as the root of the JSON data stream to be serialized by
+the #JsonGenerator.
+&lt;note&gt;The node is copied by the generator object, so it can be safely
+freed after calling this function.&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #JsonNode</doc>
+            <type name="Node" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_data" c:identifier="json_generator_to_data">
+        <doc xml:whitespace="preserve">Generates a JSON data stream from @generator and returns it as a
+buffer.
+Use g_free() to free the allocated resources.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated buffer holding a JSON data stream.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="length"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the length of the returned buffer, or %NULL</doc>
+            <type name="gulong" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_file" c:identifier="json_generator_to_file" throws="1">
+        <doc xml:whitespace="preserve">Creates a JSON data stream and puts it inside @filename, overwriting the
+current file contents. This operation is atomic.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if saving was successful.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">path to the target file</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_stream"
+              c:identifier="json_generator_to_stream"
+              version="0.12"
+              throws="1">
+        <doc xml:whitespace="preserve">Outputs JSON data and streams it (synchronously) to @stream.
+on failure. In case of error, the #GError will be filled accordingly</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the write operation was successful, and %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="stream" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GOutputStream</doc>
+            <type name="Gio.OutputStream" c:type="GOutputStream*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Gio.Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="indent" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Number of spaces to be used to indent when pretty printing.</doc>
+        <type name="guint"/>
+      </property>
+      <property name="indent-char"
+                version="0.6"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The character that should be used when indenting in pretty print.</doc>
+        <type name="guint"/>
+      </property>
+      <property name="pretty" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether the output should be "pretty-printed", with indentation and
+newlines. The indentation level can be controlled by using the
+JsonGenerator:indent property</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="root"
+                version="0.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The root #JsonNode to be used when constructing a JSON data
+stream.</doc>
+        <type name="Node"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="GeneratorPrivate" c:type="JsonGeneratorPrivate*"/>
+      </field>
+    </class>
+    <record name="GeneratorClass"
+            c:type="JsonGeneratorClass"
+            glib:is-gtype-struct-for="Generator">
+      <doc xml:whitespace="preserve">#JsonGenerator class</doc>
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_json_reserved1" introspectable="0">
+        <callback name="_json_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_json_reserved2" introspectable="0">
+        <callback name="_json_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_json_reserved3" introspectable="0">
+        <callback name="_json_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_json_reserved4" introspectable="0">
+        <callback name="_json_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="GeneratorPrivate"
+            c:type="JsonGeneratorPrivate"
+            disguised="1">
+    </record>
+    <record name="Node"
+            c:type="JsonNode"
+            glib:type-name="JsonNode"
+            glib:get-type="json_node_get_type"
+            c:symbol-prefix="node">
+      <doc xml:whitespace="preserve">A generic container of JSON data types. The contents of the #JsonNode
+structure are private and should only be accessed via the provided
+functions and never directly.</doc>
+      <constructor name="new" c:identifier="json_node_new">
+        <doc xml:whitespace="preserve">Creates a new #JsonNode of @type.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #JsonNode</doc>
+          <type name="Node" c:type="JsonNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #JsonNodeType</doc>
+            <type name="NodeType" c:type="JsonNodeType"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy" c:identifier="json_node_copy">
+        <doc xml:whitespace="preserve">Copies @node. If the node contains complex data types then the reference
+count of the objects is increased.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the copied #JsonNode</doc>
+          <type name="Node" c:type="JsonNode*"/>
+        </return-value>
+      </method>
+      <method name="dup_array" c:identifier="json_node_dup_array">
+        <return-value transfer-ownership="full">
+          <type name="Array" c:type="JsonArray*"/>
+        </return-value>
+      </method>
+      <method name="dup_object" c:identifier="json_node_dup_object">
+        <doc xml:whitespace="preserve">Retrieves the #JsonObject inside @node. The reference count of
+the returned object is increased.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #JsonObject</doc>
+          <type name="Object" c:type="JsonObject*"/>
+        </return-value>
+      </method>
+      <method name="dup_string" c:identifier="json_node_dup_string">
+        <doc xml:whitespace="preserve">Gets a copy of the string value stored inside a #JsonNode
+of the #JsonNode contents. Use g_free() to free the allocated resources</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated string containing a copy</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="json_node_free">
+        <doc xml:whitespace="preserve">Frees the resources allocated by @node.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_array" c:identifier="json_node_get_array">
+        <doc xml:whitespace="preserve">Retrieves the #JsonArray stored inside a #JsonNode</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #JsonArray</doc>
+          <type name="Array" c:type="JsonArray*"/>
+        </return-value>
+      </method>
+      <method name="get_boolean" c:identifier="json_node_get_boolean">
+        <doc xml:whitespace="preserve">Gets the boolean value stored inside a #JsonNode</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a boolean value.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_double" c:identifier="json_node_get_double">
+        <doc xml:whitespace="preserve">Gets the double value stored inside a #JsonNode</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a double value.</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_int" c:identifier="json_node_get_int">
+        <doc xml:whitespace="preserve">Gets the integer value stored inside a #JsonNode</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">an integer value.</doc>
+          <type name="gint64" c:type="gint64"/>
+        </return-value>
+      </method>
+      <method name="get_node_type"
+              c:identifier="json_node_get_node_type"
+              version="0.8">
+        <doc xml:whitespace="preserve">Retrieves the #JsonNodeType of @node</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type of the node</doc>
+          <type name="NodeType" c:type="JsonNodeType"/>
+        </return-value>
+      </method>
+      <method name="get_object" c:identifier="json_node_get_object">
+        <doc xml:whitespace="preserve">Retrieves the #JsonObject stored inside a #JsonNode</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #JsonObject</doc>
+          <type name="Object" c:type="JsonObject*"/>
+        </return-value>
+      </method>
+      <method name="get_parent" c:identifier="json_node_get_parent">
+        <doc xml:whitespace="preserve">Retrieves the parent #JsonNode of @node.
+the root node</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the parent node, or %NULL if @node is</doc>
+          <type name="Node" c:type="JsonNode*"/>
+        </return-value>
+      </method>
+      <method name="get_string" c:identifier="json_node_get_string">
+        <doc xml:whitespace="preserve">Gets the string value stored inside a #JsonNode</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string value.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_value" c:identifier="json_node_get_value">
+        <doc xml:whitespace="preserve">Retrieves a value from a #JsonNode and copies into @value. When done
+using it, call g_value_unset() on the #GValue.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">return location for an uninitialized value</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value_type"
+              c:identifier="json_node_get_value_type"
+              version="0.4">
+        <doc xml:whitespace="preserve">Returns the #GType of the payload of the node.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GType for the payload.</doc>
+          <type name="GType" c:type="GType"/>
+        </return-value>
+      </method>
+      <method name="is_null" c:identifier="json_node_is_null" version="0.8">
+        <doc xml:whitespace="preserve">Checks whether @node is a %JSON_NODE_NULL
+&lt;note&gt;A null node is not the same as a %NULL #JsonNode&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the node is null</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_array" c:identifier="json_node_set_array">
+        <doc xml:whitespace="preserve">Sets @array inside @node and increases the #JsonArray reference count</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="array" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #JsonArray</doc>
+            <type name="Array" c:type="JsonArray*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_boolean" c:identifier="json_node_set_boolean">
+        <doc xml:whitespace="preserve">Sets @value as the boolean content of the @node, replacing any existing
+content.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a boolean value</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_double" c:identifier="json_node_set_double">
+        <doc xml:whitespace="preserve">Sets @value as the double content of the @node, replacing any existing
+content.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a double value</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_int" c:identifier="json_node_set_int">
+        <doc xml:whitespace="preserve">Sets @value as the integer content of the @node, replacing any existing
+content.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an integer value</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_object" c:identifier="json_node_set_object">
+        <doc xml:whitespace="preserve">Sets @objects inside @node. The reference count of @object is increased.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #JsonObject</doc>
+            <type name="Object" c:type="JsonObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_parent"
+              c:identifier="json_node_set_parent"
+              version="0.8">
+        <doc xml:whitespace="preserve">Sets the parent #JsonNode of @node</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the parent #JsonNode of @node</doc>
+            <type name="Node" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_string" c:identifier="json_node_set_string">
+        <doc xml:whitespace="preserve">Sets @value as the string content of the @node, replacing any existing
+content.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a string value</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_value" c:identifier="json_node_set_value">
+        <doc xml:whitespace="preserve">Sets @value inside @node. The passed #GValue is copied into the #JsonNode</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GValue to set</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="take_array" c:identifier="json_node_take_array">
+        <doc xml:whitespace="preserve">Sets @array into @node without increasing the #JsonArray reference count.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="array" transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #JsonArray</doc>
+            <type name="Array" c:type="JsonArray*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="take_object" c:identifier="json_node_take_object">
+        <doc xml:whitespace="preserve">Sets @object inside @node. The reference count of @object is not increased.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #JsonObject</doc>
+            <type name="Object" c:type="JsonObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="type_name" c:identifier="json_node_type_name">
+        <doc xml:whitespace="preserve">Retrieves the user readable name of the data type contained by @node.
+is owned by the node and should never be modified or freed</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string containing the name of the type. The returned string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="NodeType" c:type="JsonNodeType">
+      <doc xml:whitespace="preserve">Indicates the content of a #JsonNode.</doc>
+      <member name="object" value="0" c:identifier="JSON_NODE_OBJECT"/>
+      <member name="array" value="1" c:identifier="JSON_NODE_ARRAY"/>
+      <member name="value" value="2" c:identifier="JSON_NODE_VALUE"/>
+      <member name="null" value="3" c:identifier="JSON_NODE_NULL"/>
+    </enumeration>
+    <record name="Object"
+            c:type="JsonObject"
+            glib:type-name="JsonObject"
+            glib:get-type="json_object_get_type"
+            c:symbol-prefix="object">
+      <doc xml:whitespace="preserve">A JSON object type. The contents of the #JsonObject structure are private
+and should only be accessed by the provided API</doc>
+      <constructor name="new" c:identifier="json_object_new">
+        <doc xml:whitespace="preserve">Creates a new #JsonObject, an JSON object type representation.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #JsonObject</doc>
+          <type name="Object" c:type="JsonObject*"/>
+        </return-value>
+      </constructor>
+      <method name="add_member"
+              c:identifier="json_object_add_member"
+              deprecated="Use json_object_set_member() instead"
+              deprecated-version="0.8">
+        <doc xml:whitespace="preserve">Adds a member named @member_name and containing @node into a #JsonObject.
+The object will take ownership of the #JsonNode.
+This function will return if the @object already contains a member</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="node" transfer-ownership="full">
+            <doc xml:whitespace="preserve">the value of the member</doc>
+            <type name="Node" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dup_member"
+              c:identifier="json_object_dup_member"
+              version="0.6">
+        <doc xml:whitespace="preserve">Retrieves a copy of the #JsonNode containing the value of @member_name
+inside a #JsonObject
+object member or %NULL. Use json_node_free() when done.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a copy of the node for the requested</doc>
+          <type name="Node" c:type="JsonNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the JSON object member to access</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="foreach_member"
+              c:identifier="json_object_foreach_member"
+              version="0.8">
+        <doc xml:whitespace="preserve">Iterates over all members of @object and calls @func on
+each one of them.
+It is safe to change the value of a #JsonNode of the @object
+from within the iterator @func, but it is not safe to add or
+remove members from the @object.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">the function to be called on each member</doc>
+            <type name="ObjectForeach" c:type="JsonObjectForeach"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to be passed to the function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_array_member"
+              c:identifier="json_object_get_array_member"
+              version="0.8">
+        <doc xml:whitespace="preserve">Convenience function that retrieves the array
+stored in @member_name of @object</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the array inside the object's member</doc>
+          <type name="Array" c:type="JsonArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_boolean_member"
+              c:identifier="json_object_get_boolean_member"
+              version="0.8">
+        <doc xml:whitespace="preserve">Convenience function that retrieves the boolean value
+stored in @member_name of @object</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the boolean value of the object's member</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_double_member"
+              c:identifier="json_object_get_double_member"
+              version="0.8">
+        <doc xml:whitespace="preserve">Convenience function that retrieves the floating point value
+stored in @member_name of @object</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the floating point value of the object's member</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int_member"
+              c:identifier="json_object_get_int_member"
+              version="0.8">
+        <doc xml:whitespace="preserve">Convenience function that retrieves the integer value
+stored in @member_name of @object</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the integer value of the object's member</doc>
+          <type name="gint64" c:type="gint64"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_member" c:identifier="json_object_get_member">
+        <doc xml:whitespace="preserve">Retrieves the #JsonNode containing the value of @member_name inside
+a #JsonObject.
+member, or %NULL</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to the node for the requested object</doc>
+          <type name="Node" c:type="JsonNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the JSON object member to access</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_members" c:identifier="json_object_get_members">
+        <doc xml:whitespace="preserve">Retrieves all the names of the members of a #JsonObject. You can
+obtain the value for each member using json_object_get_member().
+of member names. The content of the list is owned by the #JsonObject
+and should never be modified or freed. When you have finished using
+the returned list, use g_list_free() to free the resources it has
+allocated.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a #GList</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="utf8"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_null_member"
+              c:identifier="json_object_get_null_member"
+              version="0.8">
+        <doc xml:whitespace="preserve">Convenience function that checks whether the value
+stored in @member_name of @object is null</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value is null</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_object_member"
+              c:identifier="json_object_get_object_member"
+              version="0.8">
+        <doc xml:whitespace="preserve">Convenience function that retrieves the object
+stored in @member_name of @object</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the object inside the object's member</doc>
+          <type name="Object" c:type="JsonObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_size" c:identifier="json_object_get_size">
+        <doc xml:whitespace="preserve">Retrieves the number of members of a #JsonObject.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of members</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_string_member"
+              c:identifier="json_object_get_string_member"
+              version="0.8">
+        <doc xml:whitespace="preserve">Convenience function that retrieves the string value
+stored in @member_name of @object</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the string value of the object's member</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_values" c:identifier="json_object_get_values">
+        <doc xml:whitespace="preserve">Retrieves all the values of the members of a #JsonObject.
+#JsonNode&lt;!-- --&gt;s. The content of the list is owned by the #JsonObject
+and should never be modified or freed. When you have finished using the
+returned list, use g_list_free() to free the resources it has allocated.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">a #GList of</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="Node"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="has_member" c:identifier="json_object_has_member">
+        <doc xml:whitespace="preserve">Checks whether @object has a member named @member_name.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the JSON object has the requested member</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a JSON object member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ref" c:identifier="json_object_ref">
+        <doc xml:whitespace="preserve">Increase by one the reference count of a #JsonObject.
+increased by one.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the passed #JsonObject, with the reference count</doc>
+          <type name="Object" c:type="JsonObject*"/>
+        </return-value>
+      </method>
+      <method name="remove_member" c:identifier="json_object_remove_member">
+        <doc xml:whitespace="preserve">Removes @member_name from @object, freeing its allocated resources.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member to remove</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_array_member"
+              c:identifier="json_object_set_array_member"
+              version="0.8">
+        <doc xml:whitespace="preserve">Convenience function for setting an array @value of
+The @object will take ownership of the passed #JsonArray</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="full">
+            <doc xml:whitespace="preserve">the value of the member</doc>
+            <type name="Array" c:type="JsonArray*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_boolean_member"
+              c:identifier="json_object_set_boolean_member"
+              version="0.8">
+        <doc xml:whitespace="preserve">Convenience function for setting a boolean @value of</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the member</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_double_member"
+              c:identifier="json_object_set_double_member"
+              version="0.8">
+        <doc xml:whitespace="preserve">Convenience function for setting a floating point @value
+of @member_name inside @object.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the member</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_int_member"
+              c:identifier="json_object_set_int_member"
+              version="0.8">
+        <doc xml:whitespace="preserve">Convenience function for setting an integer @value of</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the member</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_member"
+              c:identifier="json_object_set_member"
+              version="0.8">
+        <doc xml:whitespace="preserve">Sets @node as the value of @member_name inside @object.
+If @object already contains a member called @member_name then
+the member's current value is overwritten. Otherwise, a new
+member is added to @object.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="node" transfer-ownership="full">
+            <doc xml:whitespace="preserve">the value of the member</doc>
+            <type name="Node" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_null_member"
+              c:identifier="json_object_set_null_member"
+              version="0.8">
+        <doc xml:whitespace="preserve">Convenience function for setting a null @value of</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_object_member"
+              c:identifier="json_object_set_object_member"
+              version="0.8">
+        <doc xml:whitespace="preserve">Convenience function for setting an object @value of
+The @object will take ownership of the passed #JsonObject</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="full">
+            <doc xml:whitespace="preserve">the value of the member</doc>
+            <type name="Object" c:type="JsonObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_string_member"
+              c:identifier="json_object_set_string_member"
+              version="0.8">
+        <doc xml:whitespace="preserve">Convenience function for setting a string @value of</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the member</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unref" c:identifier="json_object_unref">
+        <doc xml:whitespace="preserve">Decreases by one the reference count of a #JsonObject. If the
+reference count reaches zero, the object is destroyed and all
+its allocated resources are freed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <callback name="ObjectForeach" c:type="JsonObjectForeach" version="0.8">
+      <doc xml:whitespace="preserve">The function to be passed to json_object_foreach_member(). You
+should not add or remove members to and from @object within
+this function. It is safe to change the value of @member_node.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the iterated #JsonObject</doc>
+          <type name="Object" c:type="JsonObject*"/>
+        </parameter>
+        <parameter name="member_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the member</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="member_node" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #JsonNode containing the @member_name value</doc>
+          <type name="Node" c:type="JsonNode*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <doc xml:whitespace="preserve">data passed to the function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="Parser"
+           c:symbol-prefix="parser"
+           c:type="JsonParser"
+           parent="GObject.Object"
+           glib:type-name="JsonParser"
+           glib:get-type="json_parser_get_type"
+           glib:type-struct="ParserClass">
+      <doc xml:whitespace="preserve">JSON data streams parser. The contents of the #JsonParser structure are
+private and should only be accessed via the provided API.</doc>
+      <constructor name="new" c:identifier="json_parser_new">
+        <doc xml:whitespace="preserve">Creates a new #JsonParser instance. You can use the #JsonParser to
+load a JSON stream from either a file or a buffer and then walk the
+hierarchy using the data types API.
+to release all the memory it allocates.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #JsonParser. Use g_object_unref()</doc>
+          <type name="Parser" c:type="JsonParser*"/>
+        </return-value>
+      </constructor>
+      <function name="error_quark" c:identifier="json_parser_error_quark">
+        <return-value transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </return-value>
+      </function>
+      <method name="get_current_line"
+              c:identifier="json_parser_get_current_line">
+        <doc xml:whitespace="preserve">Retrieves the line currently parsed, starting from 1.
+This function has defined behaviour only while parsing; calling this
+function from outside the signal handlers emitted by #JsonParser will
+yield 0.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the currently parsed line, or 0.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_current_pos"
+              c:identifier="json_parser_get_current_pos">
+        <doc xml:whitespace="preserve">Retrieves the current position inside the current line, starting
+from 0.
+This function has defined behaviour only while parsing; calling this
+function from outside the signal handlers emitted by #JsonParser will
+yield 0.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the position in the current line, or 0.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_root" c:identifier="json_parser_get_root">
+        <doc xml:whitespace="preserve">Retrieves the top level node from the parsed JSON stream.
+node is owned by the #JsonParser and should never be modified
+or freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the root #JsonNode . The returned</doc>
+          <type name="Node" c:type="JsonNode*"/>
+        </return-value>
+      </method>
+      <method name="has_assignment"
+              c:identifier="json_parser_has_assignment"
+              version="0.4">
+        <doc xml:whitespace="preserve">A JSON data stream might sometimes contain an assignment, like:
+|[
+]|
+even though it would technically constitute a violation of the RFC.
+#JsonParser will ignore the left hand identifier and parse the right
+hand value of the assignment. #JsonParser will record, though, the
+existence of the assignment in the data stream and the variable name
+used.
+used in the assignment. The string is owned by #JsonParser and should
+never be modified or freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if there was an assignment, %FALSE otherwise. If</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="variable_name"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">Return location for the variable name, or %NULL</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_from_data"
+              c:identifier="json_parser_load_from_data"
+              throws="1">
+        <doc xml:whitespace="preserve">Loads a JSON stream from a buffer and parses it. You can call this function
+multiple times with the same #JsonParser object, but the contents of the
+parser will be destroyed each time.
+of error, @error is set accordingly and %FALSE is returned</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the buffer was succesfully parser. In case</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the buffer to parse</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length of the buffer, or -1</doc>
+            <type name="glong" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_from_file"
+              c:identifier="json_parser_load_from_file"
+              throws="1">
+        <doc xml:whitespace="preserve">Loads a JSON stream from the content of @filename and parses it. See
+json_parser_load_from_data().
+In case of error, @error is set accordingly and %FALSE is returned</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the file was successfully loaded and parsed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the path for the file to parse</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_from_stream"
+              c:identifier="json_parser_load_from_stream"
+              version="0.12"
+              throws="1">
+        <doc xml:whitespace="preserve">Loads the contents of an input stream and parses them.
+If @cancellable is not %NULL, then the operation can be cancelled by
+triggering the @cancellable object from another thread. If the
+operation was cancelled, the error %G_IO_ERROR_CANCELLED will be set
+on the passed @error.
+parsed, and %FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the data stream was successfully read and</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="stream" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an open #GInputStream</doc>
+            <type name="Gio.InputStream" c:type="GInputStream*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Gio.Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_from_stream_async"
+              c:identifier="json_parser_load_from_stream_async"
+              version="0.12">
+        <doc xml:whitespace="preserve">Asynchronously reads the contents of @stream.
+For more details, see json_parser_load_from_stream() which is the
+synchronous version of this call.
+When the operation is finished, @callback will be called. You should
+then call json_parser_load_from_stream_finish() to get the result
+of the operation.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stream" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GInputStream</doc>
+            <type name="Gio.InputStream" c:type="GInputStream*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a #GCancellable, or %NULL</doc>
+            <type name="Gio.Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="3">
+            <doc xml:whitespace="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
+            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to pass to @callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_from_stream_finish"
+              c:identifier="json_parser_load_from_stream_finish"
+              version="0.12"
+              throws="1">
+        <doc xml:whitespace="preserve">Finishes an asynchronous stream loading started with
+json_parser_load_from_stream_async().
+and parsed, and %FALSE otherwise. In case of error, the #GError will be
+filled accordingly.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the content of the stream was successfully retrieves</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GAsyncResult</doc>
+            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="ParserPrivate" c:type="JsonParserPrivate*"/>
+      </field>
+      <glib:signal name="array-element">
+        <doc xml:whitespace="preserve">The ::array-element signal is emitted each time the #JsonParser
+has successfully parsed a single element of a #JsonArray. The
+array and element index are passed to the signal handlers.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #JsonArray</doc>
+            <type name="Array"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of the newly parsed element</doc>
+            <type name="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="array-end">
+        <doc xml:whitespace="preserve">The ::array-end signal is emitted each time the #JsonParser
+has successfully parsed an entire #JsonArray</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the parsed #JsonArray</doc>
+            <type name="Array"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="array-start">
+        <doc xml:whitespace="preserve">The ::array-start signal is emitted each time the #JsonParser
+starts parsing a #JsonArray</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="error">
+        <doc xml:whitespace="preserve">The ::error signal is emitted each time a #JsonParser encounters
+an error in a JSON stream.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to the #GError</doc>
+            <type name="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="object-end">
+        <doc xml:whitespace="preserve">The ::object-end signal is emitted each time the #JsonParser
+has successfully parsed an entire #JsonObject.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the parsed #JsonObject</doc>
+            <type name="Object"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="object-member">
+        <doc xml:whitespace="preserve">The ::object-member signal is emitted each time the #JsonParser
+has successfully parsed a single member of a #JsonObject. The
+object and member are passed to the signal handlers.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #JsonObject</doc>
+            <type name="Object"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the newly parsed member</doc>
+            <type name="utf8"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="object-start">
+        <doc xml:whitespace="preserve">The ::object-start signal is emitted each time the #JsonParser
+starts parsing a #JsonObject.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="parse-end">
+        <doc xml:whitespace="preserve">The ::parse-end signal is emitted when the parser successfully
+finished parsing a JSON data stream</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="parse-start">
+        <doc xml:whitespace="preserve">The ::parse-start signal is emitted when the parser began parsing
+a JSON data stream.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="ParserClass"
+            c:type="JsonParserClass"
+            glib:is-gtype-struct-for="Parser">
+      <doc xml:whitespace="preserve">#JsonParser class.</doc>
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="parse_start">
+        <callback name="parse_start">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="Parser" c:type="JsonParser*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="object_start">
+        <callback name="object_start">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="Parser" c:type="JsonParser*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="object_member">
+        <callback name="object_member">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="Parser" c:type="JsonParser*"/>
+            </parameter>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="JsonObject*"/>
+            </parameter>
+            <parameter name="member_name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="object_end">
+        <callback name="object_end">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="Parser" c:type="JsonParser*"/>
+            </parameter>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="JsonObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="array_start">
+        <callback name="array_start">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="Parser" c:type="JsonParser*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="array_element">
+        <callback name="array_element">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="Parser" c:type="JsonParser*"/>
+            </parameter>
+            <parameter name="array" transfer-ownership="none">
+              <type name="Array" c:type="JsonArray*"/>
+            </parameter>
+            <parameter name="index_" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="array_end">
+        <callback name="array_end">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="Parser" c:type="JsonParser*"/>
+            </parameter>
+            <parameter name="array" transfer-ownership="none">
+              <type name="Array" c:type="JsonArray*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="parse_end">
+        <callback name="parse_end">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="Parser" c:type="JsonParser*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="error">
+        <callback name="error">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="Parser" c:type="JsonParser*"/>
+            </parameter>
+            <parameter name="error" transfer-ownership="none">
+              <type name="GLib.Error" c:type="GError*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_json_reserved1" introspectable="0">
+        <callback name="_json_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_json_reserved2" introspectable="0">
+        <callback name="_json_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_json_reserved3" introspectable="0">
+        <callback name="_json_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_json_reserved4" introspectable="0">
+        <callback name="_json_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_json_reserved5" introspectable="0">
+        <callback name="_json_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_json_reserved6" introspectable="0">
+        <callback name="_json_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_json_reserved7" introspectable="0">
+        <callback name="_json_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_json_reserved8" introspectable="0">
+        <callback name="_json_reserved8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="ParserError" c:type="JsonParserError">
+      <doc xml:whitespace="preserve">Error enumeration for #JsonParser
+This enumeration can be extended at later date</doc>
+      <member name="parse" value="0" c:identifier="JSON_PARSER_ERROR_PARSE"/>
+      <member name="trailing_comma"
+              value="1"
+              c:identifier="JSON_PARSER_ERROR_TRAILING_COMMA"/>
+      <member name="missing_comma"
+              value="2"
+              c:identifier="JSON_PARSER_ERROR_MISSING_COMMA"/>
+      <member name="missing_colon"
+              value="3"
+              c:identifier="JSON_PARSER_ERROR_MISSING_COLON"/>
+      <member name="invalid_bareword"
+              value="4"
+              c:identifier="JSON_PARSER_ERROR_INVALID_BAREWORD"/>
+      <member name="unknown"
+              value="5"
+              c:identifier="JSON_PARSER_ERROR_UNKNOWN"/>
+    </enumeration>
+    <record name="ParserPrivate" c:type="JsonParserPrivate" disguised="1">
+    </record>
+    <class name="Reader"
+           c:symbol-prefix="reader"
+           c:type="JsonReader"
+           version="0.12"
+           parent="GObject.Object"
+           glib:type-name="JsonReader"
+           glib:get-type="json_reader_get_type"
+           glib:type-struct="ReaderClass">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;JsonReader&lt;/structname&gt; structure contains only
+private data and should only be accessed using the provided API</doc>
+      <constructor name="new" c:identifier="json_reader_new" version="0.12">
+        <doc xml:whitespace="preserve">Creates a new #JsonReader. You can use this object to read the contents of
+the JSON tree starting from @node
+release the allocated resources when done</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #JsonReader. Use g_object_unref() to</doc>
+          <type name="Reader" c:type="JsonReader*"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #JsonNode, or %NULL</doc>
+            <type name="Node" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="error_quark" c:identifier="json_reader_error_quark">
+        <return-value transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </return-value>
+      </function>
+      <method name="count_elements"
+              c:identifier="json_reader_count_elements"
+              version="0.12">
+        <doc xml:whitespace="preserve">Counts the elements of the current position, if @reader is
+positioned on an array
+the #JsonReader is set in an error state</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of elements, or -1. In case of failure</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="count_members"
+              c:identifier="json_reader_count_members"
+              version="0.12">
+        <doc xml:whitespace="preserve">Counts the members of the current position, if @reader is
+positioned on an object
+the #JsonReader is set in an error state</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of members, or -1. In case of failure</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="end_element"
+              c:identifier="json_reader_end_element"
+              version="0.12">
+        <doc xml:whitespace="preserve">Moves the cursor back to the previous node after being positioned
+inside an array
+This function resets the error state of @reader, if any was set</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="end_member"
+              c:identifier="json_reader_end_member"
+              version="0.12">
+        <doc xml:whitespace="preserve">Moves the cursor back to the previous node after being positioned
+inside an object
+This function resets the error state of @reader, if any was set</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_boolean_value"
+              c:identifier="json_reader_get_boolean_value"
+              version="0.12">
+        <doc xml:whitespace="preserve">Retrieves the boolean value of the current position of @reader</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the boolean value</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_double_value"
+              c:identifier="json_reader_get_double_value"
+              version="0.12">
+        <doc xml:whitespace="preserve">Retrieves the floating point value of the current position of @reader</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the floating point value</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_error"
+              c:identifier="json_reader_get_error"
+              version="0.12">
+        <doc xml:whitespace="preserve">Retrieves the #GError currently set on @reader, if the #JsonReader
+is in error state</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the pointer to the error, or %NULL</doc>
+          <type name="GLib.Error" c:type="GError*"/>
+        </return-value>
+      </method>
+      <method name="get_int_value"
+              c:identifier="json_reader_get_int_value"
+              version="0.12">
+        <doc xml:whitespace="preserve">Retrieves the integer value of the current position of @reader</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the integer value</doc>
+          <type name="gint64" c:type="gint64"/>
+        </return-value>
+      </method>
+      <method name="get_null_value"
+              c:identifier="json_reader_get_null_value"
+              version="0.12">
+        <doc xml:whitespace="preserve">Checks whether the value of the current position of @reader is 'null'</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if 'null' is set, and %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_string_value"
+              c:identifier="json_reader_get_string_value"
+              version="0.12">
+        <doc xml:whitespace="preserve">Retrieves the string value of the current position of @reader</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the string value</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_value"
+              c:identifier="json_reader_get_value"
+              version="0.12">
+        <doc xml:whitespace="preserve">Retrieves the #JsonNode of the current position of @reader
+is owned by the #JsonReader and it should not be modified or freed
+directly</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #JsonNode, or %NULL. The returned node</doc>
+          <type name="Node" c:type="JsonNode*"/>
+        </return-value>
+      </method>
+      <method name="is_array"
+              c:identifier="json_reader_is_array"
+              version="0.12">
+        <doc xml:whitespace="preserve">Checks whether the @reader is currently on an array
+otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #JsonReader is on an array, and %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_object"
+              c:identifier="json_reader_is_object"
+              version="0.12">
+        <doc xml:whitespace="preserve">Checks whether the @reader is currently on an object
+otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #JsonReader is on an object, and %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_value"
+              c:identifier="json_reader_is_value"
+              version="0.12">
+        <doc xml:whitespace="preserve">Checks whether the @reader is currently on a value
+otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #JsonReader is on a value, and %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="read_element"
+              c:identifier="json_reader_read_element"
+              version="0.12">
+        <doc xml:whitespace="preserve">Advances the cursor of @reader to the element @index_ of array at the
+current position.
+You can use the json_reader_get_value* family of functions to retrieve
+the value of the element; for instance:
+|[
+json_reader_read_element (reader, 0);
+int_value = json_reader_get_int_value (reader);
+]|
+After reading the value, json_reader_end_element() should be called to
+reposition the cursor inside the #JsonReader, e.g.:
+|[
+json_reader_read_element (reader, 1);
+str_value = json_reader_get_string_value (reader);
+json_reader_end_element (reader);
+json_reader_read_element (reader, 2);
+str_value = json_reader_get_string_value (reader);
+json_reader_end_element (reader);
+]|
+If @reader is not currently on an array, or if the @index_ is bigger than
+the size of the array, the #JsonReader will be put in an error state until
+json_reader_end_element() is called.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, and %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of the element</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_member"
+              c:identifier="json_reader_read_member"
+              version="0.12">
+        <doc xml:whitespace="preserve">Advances the cursor of @reader to the @member_name of the object at the
+current position.
+You can use the json_reader_get_value* family of functions to retrieve
+the value of the member; for instance:
+|[
+json_reader_read_member (reader, "width");
+width = json_reader_get_int_value (reader);
+]|
+After reading the value, json_reader_end_member() should be called to
+reposition the cursor inside the #JsonReader, e.g.:
+|[
+json_reader_read_member (reader, "author");
+author = json_reader_get_string_value (reader);
+json_reader_end_element (reader);
+json_reader_read_element (reader, "title");
+title = json_reader_get_string_value (reader);
+json_reader_end_element (reader);
+]|
+If @reader is not currently on an object, or if the @member_name is not
+defined in the object, the #JsonReader will be put in an error state until
+json_reader_end_member() is called.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success, and %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="member_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the member to read</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_root"
+              c:identifier="json_reader_set_root"
+              version="0.12">
+        <doc xml:whitespace="preserve">Sets the root #JsonNode to be read by @reader. The @reader will take
+a copy of @root
+If another #JsonNode is currently set as root, it will be replaced.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="root" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a #JsonNode</doc>
+            <type name="Node" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="root"
+                version="0.12"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The root of the JSON tree that the #JsonReader should read.</doc>
+        <type name="Node"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="ReaderPrivate" c:type="JsonReaderPrivate*"/>
+      </field>
+    </class>
+    <record name="ReaderClass"
+            c:type="JsonReaderClass"
+            glib:is-gtype-struct-for="Reader"
+            version="0.12">
+      <doc xml:whitespace="preserve">The &lt;structname&gt;JsonReaderClass&lt;/structname&gt; structure contains only
+private data</doc>
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_json_padding0" introspectable="0">
+        <callback name="_json_padding0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_json_padding1" introspectable="0">
+        <callback name="_json_padding1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_json_padding2" introspectable="0">
+        <callback name="_json_padding2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_json_padding3" introspectable="0">
+        <callback name="_json_padding3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="_json_padding4" introspectable="0">
+        <callback name="_json_padding4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="ReaderError" version="0.12" c:type="JsonReaderError">
+      <doc xml:whitespace="preserve">Error codes enumeration for #JsonReader errors</doc>
+      <member name="no_array"
+              value="0"
+              c:identifier="JSON_READER_ERROR_NO_ARRAY"/>
+      <member name="invalid_index"
+              value="1"
+              c:identifier="JSON_READER_ERROR_INVALID_INDEX"/>
+      <member name="no_object"
+              value="2"
+              c:identifier="JSON_READER_ERROR_NO_OBJECT"/>
+      <member name="invalid_member"
+              value="3"
+              c:identifier="JSON_READER_ERROR_INVALID_MEMBER"/>
+    </enumeration>
+    <record name="ReaderPrivate" c:type="JsonReaderPrivate" disguised="1">
+    </record>
+    <interface name="Serializable"
+               c:symbol-prefix="serializable"
+               c:type="JsonSerializable"
+               glib:type-name="JsonSerializable"
+               glib:get-type="json_serializable_get_type"
+               glib:type-struct="SerializableIface">
+      <virtual-method name="deserialize_property"
+                      invoker="deserialize_property">
+        <doc xml:whitespace="preserve">Asks a #JsonSerializable implementation to deserialize the
+property contained inside @property_node into @value.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the property was successfully deserialized.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to an uninitialized #GValue</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="pspec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GParamSpec</doc>
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+          <parameter name="property_node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #JsonNode containing the serialized property</doc>
+            <type name="Node" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="serialize_property" invoker="serialize_property">
+        <doc xml:whitespace="preserve">Asks a #JsonSerializable implementation to serialize a #GObject
+property into a #JsonNode object.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #JsonNode containing the serialized property</doc>
+          <type name="Node" c:type="JsonNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the property</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="pspec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GParamSpec</doc>
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="default_deserialize_property"
+              c:identifier="json_serializable_default_deserialize_property"
+              version="0.10">
+        <doc xml:whitespace="preserve">Calls the default implementation of the #JsonSerializable
+deserialize_property() virtual function
+This function can be used inside a custom implementation
+of the deserialize_property() virtual function in lieu of:
+|[
+JsonSerializable *iface;
+gboolean res;
+iface = g_type_default_interface_peek (JSON_TYPE_SERIALIZABLE);
+res = iface-&gt;deserialize_property (serializable, property_name,
+value,
+pspec,
+property_node);
+]|</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the property was successfully deserialized.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to an uninitialized #GValue</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="pspec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GParamSpec</doc>
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+          <parameter name="property_node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #JsonNode containing the serialized property</doc>
+            <type name="Node" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="default_serialize_property"
+              c:identifier="json_serializable_default_serialize_property"
+              version="0.10">
+        <doc xml:whitespace="preserve">Calls the default implementation of the #JsonSerializable
+serialize_property() virtual function
+This function can be used inside a custom implementation
+of the serialize_property() virtual function in lieu of:
+|[
+JsonSerializable *iface;
+JsonNode *node;
+iface = g_type_default_interface_peek (JSON_TYPE_SERIALIZABLE);
+node = iface-&gt;serialize_property (serializable, property_name,
+value,
+pspec);
+]|
+property</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #JsonNode containing the serialized</doc>
+          <type name="Node" c:type="JsonNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the property</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="pspec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GParamSpec</doc>
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="deserialize_property"
+              c:identifier="json_serializable_deserialize_property">
+        <doc xml:whitespace="preserve">Asks a #JsonSerializable implementation to deserialize the
+property contained inside @property_node into @value.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the property was successfully deserialized.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to an uninitialized #GValue</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="pspec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GParamSpec</doc>
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+          <parameter name="property_node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #JsonNode containing the serialized property</doc>
+            <type name="Node" c:type="JsonNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="serialize_property"
+              c:identifier="json_serializable_serialize_property">
+        <doc xml:whitespace="preserve">Asks a #JsonSerializable implementation to serialize a #GObject
+property into a #JsonNode object.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #JsonNode containing the serialized property</doc>
+          <type name="Node" c:type="JsonNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value of the property</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="pspec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GParamSpec</doc>
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="SerializableIface"
+            c:type="JsonSerializableIface"
+            glib:is-gtype-struct-for="Serializable">
+      <doc xml:whitespace="preserve">Interface that allows serializing and deserializing #GObject&lt;!-- --&gt;s
+with properties storing complex data types. The json_serialize_gobject()
+function will check if the passed #GObject implements this interface,
+so it can also be used to override the default property serialization
+sequence.</doc>
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="serialize_property">
+        <callback name="serialize_property">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #JsonNode containing the serialized property</doc>
+            <type name="Node" c:type="JsonNode*"/>
+          </return-value>
+          <parameters>
+            <parameter name="serializable" transfer-ownership="none">
+              <type name="Serializable" c:type="JsonSerializable*"/>
+            </parameter>
+            <parameter name="property_name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the name of the property</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the value of the property</doc>
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="pspec" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GParamSpec</doc>
+              <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="deserialize_property">
+        <callback name="deserialize_property">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the property was successfully deserialized.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="serializable" transfer-ownership="none">
+              <type name="Serializable" c:type="JsonSerializable*"/>
+            </parameter>
+            <parameter name="property_name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the name of the property</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="value"
+                       direction="out"
+                       caller-allocates="1"
+                       transfer-ownership="none">
+              <doc xml:whitespace="preserve">a pointer to an uninitialized #GValue</doc>
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+            <parameter name="pspec" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GParamSpec</doc>
+              <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+            <parameter name="property_node" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #JsonNode containing the serialized property</doc>
+              <type name="Node" c:type="JsonNode*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <function name="boxed_can_deserialize"
+              c:identifier="json_boxed_can_deserialize"
+              version="0.10">
+      <doc xml:whitespace="preserve">Checks whether it is possible to deserialize a #GBoxed of
+type @gboxed_type from a #JsonNode of type @node_type</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the type can be deserialized, %FALSE otherwise</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="gboxed_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a boxed type</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="node_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #JsonNode type</doc>
+          <type name="NodeType" c:type="JsonNodeType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="boxed_can_serialize"
+              c:identifier="json_boxed_can_serialize"
+              version="0.10">
+      <doc xml:whitespace="preserve">Checks whether it is possible to serialize a #GBoxed of
+type @gboxed_type into a #JsonNode. The type of the
+#JsonNode is placed inside @node_type if the function
+returns %TRUE and it's undefined otherwise.
+and %FALSE otherwise.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the type can be serialized,</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="gboxed_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a boxed type</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="node_type"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #JsonNode type to which the boxed type can be serialized into</doc>
+          <type name="NodeType" c:type="JsonNodeType*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="boxed_deserialize"
+              c:identifier="json_boxed_deserialize"
+              version="0.10">
+      <doc xml:whitespace="preserve">Deserializes @node into a #GBoxed of @gboxed_type
+g_boxed_free() to release the resources allocated by this
+function</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">the newly allocated #GBoxed. Use</doc>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="gboxed_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a boxed type</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="node" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #JsonNode</doc>
+          <type name="Node" c:type="JsonNode*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="boxed_register_deserialize_func"
+              c:identifier="json_boxed_register_deserialize_func"
+              version="0.10"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Registers a deserialization function for a #GBoxed of type @gboxed_type
+from a #JsonNode of type @node_type</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="gboxed_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a boxed type</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="node_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a node type</doc>
+          <type name="NodeType" c:type="JsonNodeType"/>
+        </parameter>
+        <parameter name="deserialize_func" transfer-ownership="none">
+          <doc xml:whitespace="preserve">deserialization function for @boxed_type from a #JsonNode of type @node_type</doc>
+          <type name="BoxedDeserializeFunc" c:type="JsonBoxedDeserializeFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="boxed_register_serialize_func"
+              c:identifier="json_boxed_register_serialize_func"
+              version="0.10"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Registers a serialization function for a #GBoxed of type @gboxed_type
+to a #JsonNode of type @node_type</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="gboxed_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a boxed type</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="node_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a node type</doc>
+          <type name="NodeType" c:type="JsonNodeType"/>
+        </parameter>
+        <parameter name="serialize_func" transfer-ownership="none">
+          <doc xml:whitespace="preserve">serialization function for @boxed_type into a #JsonNode of type @node_type</doc>
+          <type name="BoxedSerializeFunc" c:type="JsonBoxedSerializeFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="boxed_serialize"
+              c:identifier="json_boxed_serialize"
+              version="0.10">
+      <doc xml:whitespace="preserve">Serializes @boxed, a pointer to a #GBoxed of type @gboxed_type,
+into a #JsonNode
+boxed type, or %NULL if serialization either failed or was not possible</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a #JsonNode with the serialization of the</doc>
+        <type name="Node" c:type="JsonNode*"/>
+      </return-value>
+      <parameters>
+        <parameter name="gboxed_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a boxed type</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="boxed" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to a #GBoxed of type @gboxed_type</doc>
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="construct_gobject"
+              c:identifier="json_construct_gobject"
+              version="0.4"
+              deprecated="Use json_gobject_from_data() instead"
+              deprecated-version="0.10"
+              throws="1">
+      <doc xml:whitespace="preserve">Deserializes a JSON data stream and creates the corresponding
+#GObject class. If @gtype implements the #JsonSerializableIface
+interface, it will be asked to deserialize all the JSON members
+into the respective properties; otherwise, the default implementation
+will be used to translate the compatible JSON native types.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a #GObject or %NULL</doc>
+        <type name="GObject.Object" c:type="GObject*"/>
+      </return-value>
+      <parameters>
+        <parameter name="gtype" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GType of object to construct</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a JSON data stream</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <doc xml:whitespace="preserve">length of the data stream</doc>
+          <type name="gulong" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="gobject_deserialize"
+              c:identifier="json_gobject_deserialize"
+              version="0.10">
+      <doc xml:whitespace="preserve">Creates a new #GObject of type @gtype, and constructs it
+using the members of the passed #JsonObject
+instance. Use g_object_unref() to free the resources
+allocated by this function</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">The newly created #GObject</doc>
+        <type name="GObject.Object" c:type="GObject*"/>
+      </return-value>
+      <parameters>
+        <parameter name="gtype" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type of the #GObject to create</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="node" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #JsonNode of type %JSON_NODE_OBJECT describing the instance of type @gtype</doc>
+          <type name="Node" c:type="JsonNode*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="gobject_from_data"
+              c:identifier="json_gobject_from_data"
+              version="0.10"
+              throws="1">
+      <doc xml:whitespace="preserve">Deserializes a JSON data stream and creates the corresponding
+#GObject class. If @gtype implements the #JsonSerializableIface
+interface, it will be asked to deserialize all the JSON members
+into the respective properties; otherwise, the default implementation
+will be used to translate the compatible JSON native types.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a #GObject or %NULL</doc>
+        <type name="GObject.Object" c:type="GObject*"/>
+      </return-value>
+      <parameters>
+        <parameter name="gtype" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GType of object to construct</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a JSON data stream</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <doc xml:whitespace="preserve">length of the data stream, or -1 if it is NUL-terminated</doc>
+          <type name="glong" c:type="gssize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="gobject_serialize"
+              c:identifier="json_gobject_serialize"
+              version="0.10">
+      <doc xml:whitespace="preserve">Creates a #JsonNode representing the passed #GObject
+instance. Each member of the returned JSON object will
+map to a property of the #GObject
+of type %JSON_NODE_OBJECT. Use json_node_free() to free
+the resources allocated by this function</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">the newly created #JsonNode</doc>
+        <type name="Node" c:type="JsonNode*"/>
+      </return-value>
+      <parameters>
+        <parameter name="gobject" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GObject</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="gobject_to_data"
+              c:identifier="json_gobject_to_data"
+              version="0.10">
+      <doc xml:whitespace="preserve">Serializes a #GObject into a JSON data stream, iterating recursively
+over each property.
+If @gobject implements the #JsonSerializableIface interface, it will
+be asked to serialize all its properties; otherwise, the default
+implementation will be use to translate the compatible types into
+JSON native types.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a JSON data stream representing the passed #GObject</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="gobject" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GObject</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="length"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">return value for the length of the buffer, or %NULL</doc>
+          <type name="gulong" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="serialize_gobject"
+              c:identifier="json_serialize_gobject"
+              deprecated="Use json_gobject_to_data() instead"
+              deprecated-version="0.10">
+      <doc xml:whitespace="preserve">Serializes a #GObject into a JSON data stream. If @gobject implements
+the #JsonSerializableIface interface, it will be asked to serizalize all
+its properties; otherwise, the default implementation will be use to
+translate the compatible types into JSON native types.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a JSON data stream representing the passed #GObject</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="gobject" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GObject</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="length"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">return value for the length of the buffer, or %NULL</doc>
+          <type name="gulong" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/gstreamer/Gst-0.10.gir b/extra/gstreamer/Gst-0.10.gir
new file mode 100644 (file)
index 0000000..f7809ad
--- /dev/null
@@ -0,0 +1,28400 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.2"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="gstreamer-0.10"/>
+  <c:include name="gst/gst.h"/>
+  <namespace name="Gst"
+             version="0.10"
+             shared-library="libgstreamer-0.10.so.0"
+             c:identifier-prefixes="Gst"
+             c:symbol-prefixes="gst">
+    <alias name="ClockID" c:type="GstClockID">
+      <doc xml:whitespace="preserve">A datatype to hold the handle to an outstanding sync or async clock callback.</doc>
+      <type name="gpointer" c:type="gpointer"/>
+    </alias>
+    <alias name="ClockTime" c:type="GstClockTime">
+      <doc xml:whitespace="preserve">A datatype to hold a time, measured in nanoseconds.</doc>
+      <type name="guint64" c:type="guint64"/>
+    </alias>
+    <alias name="ClockTimeDiff" c:type="GstClockTimeDiff">
+      <doc xml:whitespace="preserve">A datatype to hold a time difference, measured in nanoseconds.</doc>
+      <type name="gint64" c:type="gint64"/>
+    </alias>
+    <alias name="ElementFactoryListType" c:type="GstElementFactoryListType">
+      <type name="guint64" c:type="guint64"/>
+    </alias>
+    <enumeration name="ActivateMode" c:type="GstActivateMode">
+      <doc xml:whitespace="preserve">The status of a GstPad. After activating a pad, which usually happens when the
+parent element goes from READY to PAUSED, the GstActivateMode defines if the
+pad operates in push or pull mode.</doc>
+      <member name="none" value="0" c:identifier="GST_ACTIVATE_NONE"/>
+      <member name="push" value="1" c:identifier="GST_ACTIVATE_PUSH"/>
+      <member name="pull" value="2" c:identifier="GST_ACTIVATE_PULL"/>
+    </enumeration>
+    <record name="AllocTrace" c:type="GstAllocTrace">
+      <doc xml:whitespace="preserve">The main tracing object</doc>
+      <field name="name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="live" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="mem_live" writable="1">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <method name="print" c:identifier="gst_alloc_trace_print">
+        <doc xml:whitespace="preserve">Print the status of the given GstAllocTrace.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_flags" c:identifier="gst_alloc_trace_set_flags">
+        <doc xml:whitespace="preserve">Enable the given features on the given GstAllocTrace object.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags to set</doc>
+            <type name="AllocTraceFlags" c:type="GstAllocTraceFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <bitfield name="AllocTraceFlags" c:type="GstAllocTraceFlags">
+      <doc xml:whitespace="preserve">Flags indicating which tracing feature to enable.</doc>
+      <member name="live" value="1" c:identifier="GST_ALLOC_TRACE_LIVE"/>
+      <member name="mem_live"
+              value="2"
+              c:identifier="GST_ALLOC_TRACE_MEM_LIVE"/>
+    </bitfield>
+    <bitfield name="AssocFlags" c:type="GstAssocFlags">
+      <doc xml:whitespace="preserve">Flags for an association entry.</doc>
+      <member name="none" value="0" c:identifier="GST_ASSOCIATION_FLAG_NONE"/>
+      <member name="key_unit"
+              value="1"
+              c:identifier="GST_ASSOCIATION_FLAG_KEY_UNIT"/>
+      <member name="delta_unit"
+              value="2"
+              c:identifier="GST_ASSOCIATION_FLAG_DELTA_UNIT"/>
+      <member name="last"
+              value="256"
+              c:identifier="GST_ASSOCIATION_FLAG_LAST"/>
+    </bitfield>
+    <record name="AtomicQueue"
+            c:type="GstAtomicQueue"
+            disguised="1"
+            version="0.10.33">
+      <doc xml:whitespace="preserve">The #GstAtomicQueue object implements a queue that can be used from multiple
+threads without performing any blocking operations.</doc>
+      <method name="length"
+              c:identifier="gst_atomic_queue_length"
+              version="0.10.33">
+        <doc xml:whitespace="preserve">Get the amount of items in the queue.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of elements in the queue.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="peek"
+              c:identifier="gst_atomic_queue_peek"
+              version="0.10.33"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Peek the head element of the queue without removing it from the queue.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the head element of @queue or NULL when the queue is empty.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="pop"
+              c:identifier="gst_atomic_queue_pop"
+              version="0.10.33"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Get the head element of the queue.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the head element of @queue or NULL when the queue is empty.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="push"
+              c:identifier="gst_atomic_queue_push"
+              version="0.10.33">
+        <doc xml:whitespace="preserve">Append @data to the tail of the queue.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ref" c:identifier="gst_atomic_queue_ref" version="0.10.33">
+        <doc xml:whitespace="preserve">Increase the refcount of @queue.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="gst_atomic_queue_unref"
+              version="0.10.33">
+        <doc xml:whitespace="preserve">Unref @queue and free the memory when the refcount reaches 0.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <constant name="BUFFER_COPY_ALL" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="BUFFER_OFFSET_NONE" value="-1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="BUFFER_TRACE_NAME" value="GstBuffer">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <class name="Bin"
+           c:symbol-prefix="bin"
+           c:type="GstBin"
+           parent="Element"
+           glib:type-name="GstBin"
+           glib:get-type="gst_bin_get_type"
+           glib:type-struct="BinClass">
+      <doc xml:whitespace="preserve">#GstBin is an element that can contain other #GstElement, allowing them to be
+managed as a group.
+Pads from the child elements can be ghosted to the bin, see #GstGhostPad.
+This makes the bin look like any other elements and enables creation of
+higher-level abstraction elements.
+A new #GstBin is created with gst_bin_new(). Use a #GstPipeline instead if you
+want to create a toplevel bin because a normal bin doesn't have a bus or
+handle clock distribution of its own.
+After the bin has been created you will typically add elements to it with
+gst_bin_add(). You can remove elements with gst_bin_remove().
+An element can be retrieved from a bin with gst_bin_get_by_name(), using the
+elements name. gst_bin_get_by_name_recurse_up() is mainly used for internal
+purposes and will query the parent bins when the element is not found in the
+current bin.
+An iterator of elements in a bin can be retrieved with
+gst_bin_iterate_elements(). Various other iterators exist to retrieve the
+elements in a bin.
+gst_object_unref() is used to drop your reference to the bin.
+The #GstBin::element-added signal is fired whenever a new element is added to
+the bin. Likewise the #GstBin::element-removed signal is fired whenever an
+element is removed from the bin.
+&lt;refsect2&gt;&lt;title&gt;Notes&lt;/title&gt;
+&lt;para&gt;
+A #GstBin internally intercepts every #GstMessage posted by its children and
+implements the following default behaviour for each of them:
+&lt;variablelist&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;GST_MESSAGE_EOS&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt;This message is only posted by sinks in the PLAYING
+state. If all sinks posted the EOS message, this bin will post and EOS
+message upwards.&lt;/para&gt;&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;GST_MESSAGE_SEGMENT_START&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt;just collected and never forwarded upwards.
+The messages are used to decide when all elements have completed playback
+of their segment.&lt;/para&gt;&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;GST_MESSAGE_SEGMENT_DONE&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt; Is posted by #GstBin when all elements that posted
+a SEGMENT_START have posted a SEGMENT_DONE.&lt;/para&gt;&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;GST_MESSAGE_DURATION&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt; Is posted by an element that detected a change
+in the stream duration. The default bin behaviour is to clear any
+cached duration values so that the next duration query will perform
+a full duration recalculation. The duration change is posted to the
+application so that it can refetch the new duration with a duration
+query. Note that these messages can be posted before the bin is
+prerolled, in which case the duration query might fail.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;GST_MESSAGE_CLOCK_LOST&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt; This message is posted by an element when it
+can no longer provide a clock. The default bin behaviour is to
+check if the lost clock was the one provided by the bin. If so and
+the bin is currently in the PLAYING state, the message is forwarded to
+the bin parent.
+This message is also generated when a clock provider is removed from
+the bin. If this message is received by the application, it should
+PAUSE the pipeline and set it back to PLAYING to force a new clock
+distribution.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;GST_MESSAGE_CLOCK_PROVIDE&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt; This message is generated when an element
+can provide a clock. This mostly happens when a new clock
+provider is added to the bin. The default behaviour of the bin is to
+mark the currently selected clock as dirty, which will perform a clock
+recalculation the next time the bin is asked to provide a clock.
+This message is never sent tot the application but is forwarded to
+the parent of the bin.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;OTHERS&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt; posted upwards.&lt;/para&gt;&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;/variablelist&gt;
+A #GstBin implements the following default behaviour for answering to a
+#GstQuery:
+&lt;variablelist&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;GST_QUERY_DURATION&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt;If the query has been asked before with the same format
+and the bin is a toplevel bin (ie. has no parent),
+use the cached previous value. If no previous value was cached, the
+query is sent to all sink elements in the bin and the MAXIMUM of all
+values is returned. If the bin is a toplevel bin the value is cached.
+If no sinks are available in the bin, the query fails.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;GST_QUERY_POSITION&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt;The query is sent to all sink elements in the bin and the
+MAXIMUM of all values is returned. If no sinks are available in the bin,
+the query fails.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;OTHERS&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt;the query is forwarded to all sink elements, the result
+of the first sink that answers the query successfully is returned. If no
+sink is in the bin, the query fails.&lt;/para&gt;&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;/variablelist&gt;
+A #GstBin will by default forward any event sent to it to all sink elements.
+If all the sinks return TRUE, the bin will also return TRUE, else FALSE is
+returned. If no sinks are in the bin, the event handler will return TRUE.
+&lt;/para&gt;
+&lt;/refsect2&gt;
+Last reviewed on 2006-04-28 (0.10.6)</doc>
+      <implements name="ChildProxy"/>
+      <constructor name="new" c:identifier="gst_bin_new">
+        <doc xml:whitespace="preserve">Creates a new bin with the given name.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstBin</doc>
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the new bin</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="add_element">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="element" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="do_latency">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="element_added">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="element_removed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="handle_message">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <type name="Message" c:type="GstMessage*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="remove_element">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="element" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="add" c:identifier="gst_bin_add">
+        <doc xml:whitespace="preserve">Adds the given element to the bin.  Sets the element's parent, and thus
+takes ownership of the element. An element can only be added to one bin.
+If the element's pads are linked to other pads, the pads will be unlinked
+before the element is added to the bin.
+&lt;note&gt;
+When you add an element to an already-running pipeline, you will have to
+take care to set the state of the newly-added element to the desired
+state (usually PLAYING or PAUSED, same you set the pipeline to originally)
+with gst_element_set_state(), or use gst_element_sync_state_with_parent().
+The bin or pipeline will not take care of this for you.
+&lt;/note&gt;
+MT safe.
+the bin does not want to accept the element.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the element could be added, FALSE if</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="element" transfer-ownership="full">
+            <doc xml:whitespace="preserve">the #GstElement to add</doc>
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_many"
+              c:identifier="gst_bin_add_many"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Adds a NULL-terminated list of elements to a bin.  This function is
+equivalent to calling gst_bin_add() for each member of the list. The return
+value of each gst_bin_add() is ignored.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="element_1" transfer-ownership="full">
+            <doc xml:whitespace="preserve">the #GstElement element to add to the bin</doc>
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_unconnected_pad"
+              c:identifier="gst_bin_find_unconnected_pad"
+              version="0.10.3"
+              deprecated="use gst_bin_find_unlinked_pad() instead.">
+        <doc xml:whitespace="preserve">Recursively looks for elements with an unlinked pad of the given
+direction within the specified bin and returns an unlinked pad
+if one is found, or NULL otherwise. If a pad is found, the caller
+owns a reference to it and should use gst_object_unref() on the
+pad when it is not needed any longer.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">unlinked pad of the given direction, or NULL.</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to look for an unlinked source or sink pad</doc>
+            <type name="PadDirection" c:type="GstPadDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_unlinked_pad"
+              c:identifier="gst_bin_find_unlinked_pad"
+              version="0.10.20">
+        <doc xml:whitespace="preserve">Recursively looks for elements with an unlinked pad of the given
+direction within the specified bin and returns an unlinked pad
+if one is found, or NULL otherwise. If a pad is found, the caller
+owns a reference to it and should use gst_object_unref() on the
+pad when it is not needed any longer.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">unlinked pad of the given direction, or NULL.</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to look for an unlinked source or sink pad</doc>
+            <type name="PadDirection" c:type="GstPadDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_by_interface" c:identifier="gst_bin_get_by_interface">
+        <doc xml:whitespace="preserve">Looks for an element inside the bin that implements the given
+interface. If such an element is found, it returns the element.
+You can cast this element to the given interface afterwards.  If you want
+all elements that implement the interface, use
+gst_bin_iterate_all_by_interface(). This function recurses into child bins.
+MT safe.  Caller owns returned reference.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A #GstElement inside the bin implementing the interface</doc>
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="iface" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GType of an interface</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_by_name" c:identifier="gst_bin_get_by_name">
+        <doc xml:whitespace="preserve">Gets the element with the given name from a bin. This
+function recurses into child bins.
+Returns NULL if no element with the given name is found in the bin.
+MT safe.  Caller owns returned reference.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #GstElement with the given name, or NULL</doc>
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the element name to search for</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_by_name_recurse_up"
+              c:identifier="gst_bin_get_by_name_recurse_up">
+        <doc xml:whitespace="preserve">Gets the element with the given name from this bin. If the
+element is not found, a recursion is performed on the parent bin.
+Returns NULL if:
+- no element with the given name is found in the bin
+MT safe.  Caller owns returned reference.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #GstElement with the given name, or NULL</doc>
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the element name to search for</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iterate_all_by_interface"
+              c:identifier="gst_bin_iterate_all_by_interface"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Looks for all elements inside the bin that implements the given
+interface. You can safely cast all returned elements to the given interface.
+The function recurses inside child bins. The iterator will yield a series
+of #GstElement that should be unreffed after use.
+Each element yielded by the iterator will have its refcount increased, so
+unref after use.
+MT safe.  Caller owns returned value.
+in the bin implementing the given interface, or NULL</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GstIterator of #GstElement for all elements</doc>
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+        <parameters>
+          <parameter name="iface" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GType of an interface</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iterate_elements"
+              c:identifier="gst_bin_iterate_elements"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets an iterator for the elements in this bin.
+Each element yielded by the iterator will have its refcount increased, so
+unref after use.
+MT safe.  Caller owns returned value.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GstIterator of #GstElement, or NULL</doc>
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="iterate_recurse"
+              c:identifier="gst_bin_iterate_recurse"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets an iterator for the elements in this bin.
+This iterator recurses into GstBin children.
+Each element yielded by the iterator will have its refcount increased, so
+unref after use.
+MT safe.  Caller owns returned value.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GstIterator of #GstElement, or NULL</doc>
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="iterate_sinks"
+              c:identifier="gst_bin_iterate_sinks"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets an iterator for all elements in the bin that have the
+#GST_ELEMENT_IS_SINK flag set.
+Each element yielded by the iterator will have its refcount increased, so
+unref after use.
+MT safe.  Caller owns returned value.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GstIterator of #GstElement, or NULL</doc>
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="iterate_sorted"
+              c:identifier="gst_bin_iterate_sorted"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets an iterator for the elements in this bin in topologically
+sorted order. This means that the elements are returned from
+the most downstream elements (sinks) to the sources.
+This function is used internally to perform the state changes
+of the bin elements and for clock selection.
+Each element yielded by the iterator will have its refcount increased, so
+unref after use.
+MT safe.  Caller owns returned value.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GstIterator of #GstElement, or NULL</doc>
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="iterate_sources"
+              c:identifier="gst_bin_iterate_sources"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets an iterator for all elements in the bin that have the
+#GST_ELEMENT_IS_SOURCE flag set.
+Each element yielded by the iterator will have its refcount increased, so
+unref after use.
+MT safe.  Caller owns returned value.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GstIterator of #GstElement, or NULL</doc>
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="recalculate_latency"
+              c:identifier="gst_bin_recalculate_latency"
+              version="0.10.22.">
+        <doc xml:whitespace="preserve">Query @bin for the current latency using and reconfigures this latency to all the
+elements with a LATENCY event.
+This method is typically called on the pipeline when a #GST_MESSAGE_LATENCY
+is posted on the bus.
+This function simply emits the 'do-latency' signal so any custom latency
+calculations will be performed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the latency could be queried and reconfigured.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="remove" c:identifier="gst_bin_remove">
+        <doc xml:whitespace="preserve">Removes the element from the bin, unparenting it as well.
+Unparenting the element means that the element will be dereferenced,
+so if the bin holds the only reference to the element, the element
+will be freed in the process of removing it from the bin.  If you
+want the element to still exist after removing, you need to call
+gst_object_ref() before removing it from the bin.
+If the element's pads are linked to other pads, the pads will be unlinked
+before the element is removed from the bin.
+MT safe.
+the bin does not want to remove the element.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the element could be removed, FALSE if</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="element" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstElement to remove</doc>
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_many"
+              c:identifier="gst_bin_remove_many"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Remove a list of elements from a bin. This function is equivalent
+to calling gst_bin_remove() with each member of the list.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="element_1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the first #GstElement to remove from the bin</doc>
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="async-handling"
+                version="0.10.13"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If set to #TRUE, the bin will handle asynchronous state changes.
+This should be used only if the bin subclass is modifying the state
+of its children on its own.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="message-forward"
+                version="0.10.31"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Forward all children messages, even those that would normally be filtered by
+the bin. This can be interesting when one wants to be notified of the EOS
+state of individual elements, for example.
+The messages are converted to an ELEMENT message with the bin as the
+source. The structure of the message is named 'GstBinForwarded' and contains
+a field named 'message' of type GST_TYPE_MESSAGE that contains the original
+forwarded message.</doc>
+        <type name="gboolean"/>
+      </property>
+      <field name="element">
+        <type name="Element" c:type="GstElement"/>
+      </field>
+      <field name="numchildren">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="children">
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="children_cookie">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="child_bus">
+        <type name="Bus" c:type="GstBus*"/>
+      </field>
+      <field name="messages">
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="polling">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="state_dirty">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="clock_dirty">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="provided_clock">
+        <type name="Clock" c:type="GstClock*"/>
+      </field>
+      <field name="clock_provider">
+        <type name="Element" c:type="GstElement*"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="BinPrivate" c:type="GstBinPrivate*"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+      <glib:signal name="do-latency" version="0.10.22">
+        <doc xml:whitespace="preserve">Will be emitted when the bin needs to perform latency calculations. This
+signal is only emited for toplevel bins or when async-handling is
+enabled.
+Only one signal handler is invoked. If no signals are connected, the
+default handler is invoked, which will query and distribute the lowest
+possible latency to all sinks.
+Connect to this signal if the default latency calculations are not
+sufficient, like when you need different latencies for different sinks in
+the same pipeline.</doc>
+        <return-value transfer-ownership="none">
+          <type name="gboolean"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="element-added">
+        <doc xml:whitespace="preserve">Will be emitted after the element was added to the bin.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="element" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstElement that was added to the bin</doc>
+            <type name="Element"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="element-removed">
+        <doc xml:whitespace="preserve">Will be emitted after the element was removed from the bin.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="element" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstElement that was removed from the bin</doc>
+            <type name="Element"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="BinClass"
+            c:type="GstBinClass"
+            glib:is-gtype-struct-for="Bin">
+      <doc xml:whitespace="preserve">Subclasses can override the @add_element and @remove_element to
+update the list of children in the bin.
+The @handle_message method can be overridden to implement custom
+message handling.  @handle_message takes ownership of the message, just like
+#gst_element_post_message.</doc>
+      <field name="parent_class">
+        <type name="ElementClass" c:type="GstElementClass"/>
+      </field>
+      <field name="pool" readable="0" private="1">
+        <type name="GLib.ThreadPool" c:type="GThreadPool*"/>
+      </field>
+      <field name="element_added">
+        <callback name="element_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="bin" transfer-ownership="none">
+              <type name="Bin" c:type="GstBin*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="element_removed">
+        <callback name="element_removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="bin" transfer-ownership="none">
+              <type name="Bin" c:type="GstBin*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_element">
+        <callback name="add_element">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="bin" transfer-ownership="none">
+              <type name="Bin" c:type="GstBin*"/>
+            </parameter>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove_element">
+        <callback name="remove_element">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="bin" transfer-ownership="none">
+              <type name="Bin" c:type="GstBin*"/>
+            </parameter>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="handle_message">
+        <callback name="handle_message">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="bin" transfer-ownership="none">
+              <type name="Bin" c:type="GstBin*"/>
+            </parameter>
+            <parameter name="message" transfer-ownership="none">
+              <type name="Message" c:type="GstMessage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="do_latency">
+        <callback name="do_latency">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="bin" transfer-ownership="none">
+              <type name="Bin" c:type="GstBin*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="BinFlags" c:type="GstBinFlags">
+      <doc xml:whitespace="preserve">GstBinFlags are a set of flags specific to bins. Most are set/used
+internally. They can be checked using the GST_OBJECT_FLAG_IS_SET () macro,
+and (un)set using GST_OBJECT_FLAG_SET () and GST_OBJECT_FLAG_UNSET ().</doc>
+      <member name="bin_flag_last"
+              value="33554432"
+              c:identifier="GST_BIN_FLAG_LAST"/>
+    </bitfield>
+    <record name="BinPrivate" c:type="GstBinPrivate" disguised="1">
+    </record>
+    <class name="Buffer"
+           c:symbol-prefix="buffer"
+           c:type="GstBuffer"
+           parent="MiniObject"
+           glib:type-name="GstBuffer"
+           glib:get-type="gst_buffer_get_type"
+           glib:type-struct="BufferClass"
+           glib:fundamental="1">
+      <doc xml:whitespace="preserve">Buffers are the basic unit of data transfer in GStreamer.  The #GstBuffer
+type provides all the state necessary to define a region of memory as part
+of a stream.  Sub-buffers are also supported, allowing a smaller region of a
+buffer to become its own buffer, with mechanisms in place to ensure that
+neither memory space goes away prematurely.
+Buffers are usually created with gst_buffer_new(). After a buffer has been
+created one will typically allocate memory for it and set the size of the
+buffer data.  The following example creates a buffer that can hold a given
+video frame with a given width, height and bits per plane.
+&lt;example&gt;
+&lt;title&gt;Creating a buffer for a video frame&lt;/title&gt;
+&lt;programlisting&gt;
+GstBuffer *buffer;
+gint size, width, height, bpp;
+...
+size = width * height * bpp;
+buffer = gst_buffer_new ();
+GST_BUFFER_SIZE (buffer) = size;
+GST_BUFFER_MALLOCDATA (buffer) = g_malloc (size);
+GST_BUFFER_DATA (buffer) = GST_BUFFER_MALLOCDATA (buffer);
+...
+&lt;/programlisting&gt;
+&lt;/example&gt;
+Alternatively, use gst_buffer_new_and_alloc()
+to create a buffer with preallocated data of a given size.
+The data pointed to by the buffer can be retrieved with the GST_BUFFER_DATA()
+macro. The size of the data can be found with GST_BUFFER_SIZE(). For buffers
+of size 0, the data pointer is undefined (usually NULL) and should never be used.
+If an element knows what pad you will push the buffer out on, it should use
+gst_pad_alloc_buffer() instead to create a buffer.  This allows downstream
+elements to provide special buffers to write in, like hardware buffers.
+A buffer has a pointer to a #GstCaps describing the media type of the data
+in the buffer. Attach caps to the buffer with gst_buffer_set_caps(); this
+is typically done before pushing out a buffer using gst_pad_push() so that
+the downstream element knows the type of the buffer.
+A buffer will usually have a timestamp, and a duration, but neither of these
+are guaranteed (they may be set to #GST_CLOCK_TIME_NONE). Whenever a
+meaningful value can be given for these, they should be set. The timestamp
+and duration are measured in nanoseconds (they are #GstClockTime values).
+A buffer can also have one or both of a start and an end offset. These are
+media-type specific. For video buffers, the start offset will generally be
+the frame number. For audio buffers, it will be the number of samples
+produced so far. For compressed data, it could be the byte offset in a
+source or destination file. Likewise, the end offset will be the offset of
+the end of the buffer. These can only be meaningfully interpreted if you
+know the media type of the buffer (the #GstCaps set on it). Either or both
+can be set to #GST_BUFFER_OFFSET_NONE.
+gst_buffer_ref() is used to increase the refcount of a buffer. This must be
+done when you want to keep a handle to the buffer after pushing it to the
+next element.
+To efficiently create a smaller buffer out of an existing one, you can
+use gst_buffer_create_sub().
+If a plug-in wants to modify the buffer data in-place, it should first obtain
+a buffer that is safe to modify by using gst_buffer_make_writable().  This
+function is optimized so that a copy will only be made when it is necessary.
+A plugin that only wishes to modify the metadata of a buffer, such as the
+offset, timestamp or caps, should use gst_buffer_make_metadata_writable(),
+which will create a subbuffer of the original buffer to ensure the caller
+has sole ownership, and not copy the buffer data.
+Several flags of the buffer can be set and unset with the
+GST_BUFFER_FLAG_SET() and GST_BUFFER_FLAG_UNSET() macros. Use
+GST_BUFFER_FLAG_IS_SET() to test if a certain #GstBufferFlag is set.
+Buffers can be efficiently merged into a larger buffer with
+gst_buffer_merge() and gst_buffer_span() if the gst_buffer_is_span_fast()
+function returns TRUE.
+An element should either unref the buffer or push it out on a src pad
+using gst_pad_push() (see #GstPad).
+Buffers are usually freed by unreffing them with gst_buffer_unref(). When
+the refcount drops to 0, any data pointed to by GST_BUFFER_MALLOCDATA() will
+also be freed.
+Last reviewed on August 11th, 2006 (0.10.10)</doc>
+      <constructor name="new" c:identifier="gst_buffer_new">
+        <doc xml:whitespace="preserve">Creates a newly allocated buffer without any data.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GstBuffer.</doc>
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_and_alloc"
+                   c:identifier="gst_buffer_new_and_alloc">
+        <doc xml:whitespace="preserve">Creates a newly allocated buffer with data of the given size.
+The buffer memory is not cleared. If the requested amount of
+memory can't be allocated, the program will abort. Use
+gst_buffer_try_new_and_alloc() if you want to handle this case
+gracefully or have gotten the size to allocate from an untrusted
+source such as a media stream.
+Note that when @size == 0, the buffer data pointer will be NULL.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GstBuffer.</doc>
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the size in bytes of the new buffer's data.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="try_new_and_alloc"
+                   c:identifier="gst_buffer_try_new_and_alloc"
+                   version="0.10.13">
+        <doc xml:whitespace="preserve">Tries to create a newly allocated buffer with data of the given size. If
+the requested amount of memory can't be allocated, NULL will be returned.
+The buffer memory is not cleared.
+Note that when @size == 0, the buffer data pointer will be NULL.
+MT safe.
+be allocated.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstBuffer, or NULL if the memory couldn't</doc>
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the size in bytes of the new buffer's data.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy_metadata"
+              c:identifier="gst_buffer_copy_metadata"
+              version="0.10.13">
+        <doc xml:whitespace="preserve">Copies the metadata from @src into @dest. The data, size and mallocdata
+fields are not copied.
+all the metadata fields.
+This function is typically called from a custom buffer copy function after
+creating @dest and setting the data, size, mallocdata.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a source #GstBuffer</doc>
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags indicating what metadata fields should be copied.</doc>
+            <type name="BufferCopyFlags" c:type="GstBufferCopyFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_sub" c:identifier="gst_buffer_create_sub">
+        <doc xml:whitespace="preserve">Creates a sub-buffer from @parent at @offset and @size.
+This sub-buffer uses the actual memory space of the parent buffer.
+This function will copy the offset and timestamp fields when the
+offset is 0. If not, they will be set to #GST_CLOCK_TIME_NONE and 
+#GST_BUFFER_OFFSET_NONE.
+If @offset equals 0 and @size equals the total size of @buffer, the
+duration and offset end fields are also copied. If not they will be set
+to #GST_CLOCK_TIME_NONE and #GST_BUFFER_OFFSET_NONE.
+MT safe.
+invalid.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GstBuffer or NULL if the arguments were</doc>
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the offset into parent #GstBuffer at which the new sub-buffer begins.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the size of the new #GstBuffer sub-buffer, in bytes.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_caps" c:identifier="gst_buffer_get_caps">
+        <doc xml:whitespace="preserve">Gets the media type of the buffer. This can be NULL if there
+is no media type attached to this buffer.
+Returns NULL if there were no caps on this buffer.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a reference to the #GstCaps. unref after usage.</doc>
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="is_metadata_writable"
+              c:identifier="gst_buffer_is_metadata_writable">
+        <doc xml:whitespace="preserve">Similar to gst_buffer_is_writable, but this only ensures that the
+refcount of the buffer is 1, indicating that the caller is the sole
+owner and can change the buffer metadata, such as caps and timestamps.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the metadata is writable.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_span_fast" c:identifier="gst_buffer_is_span_fast">
+        <doc xml:whitespace="preserve">Determines whether a gst_buffer_span() can be done without copying
+the contents, that is, whether the data areas are contiguous sub-buffers of 
+the same buffer.
+MT safe.
+FALSE if a copy would be required.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the buffers are contiguous,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="buf2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the second #GstBuffer.</doc>
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="join" c:identifier="gst_buffer_join">
+        <doc xml:whitespace="preserve">Create a new buffer that is the concatenation of the two source
+buffers, and unrefs the original source buffers.
+If the buffers point to contiguous areas of memory, the buffer
+is created without copying the data.
+This is a convenience function for C programmers. See also
+gst_buffer_merge(), which does the same thing without
+unreffing the input parameters. Language bindings without
+explicit reference counting should not wrap this function.
+the source buffers.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GstBuffer which is the concatenation of</doc>
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="buf2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the second source #GstBuffer.</doc>
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="make_metadata_writable"
+              c:identifier="gst_buffer_make_metadata_writable">
+        <doc xml:whitespace="preserve">Similar to gst_buffer_make_writable, but does not ensure that the buffer
+data array is writable. Instead, this just ensures that the returned buffer
+is solely owned by the caller, by creating a subbuffer of the original
+buffer if necessary.
+After calling this function, @buf should not be referenced anymore. The
+result of this function has guaranteed writable metadata.
+may or may not be the same as @buf.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstBuffer with writable metadata, which</doc>
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+      </method>
+      <method name="merge" c:identifier="gst_buffer_merge">
+        <doc xml:whitespace="preserve">Create a new buffer that is the concatenation of the two source
+buffers.  The original source buffers will not be modified or
+unref'd.  Make sure you unref the source buffers if they are not used
+anymore afterwards.
+If the buffers point to contiguous areas of memory, the buffer
+is created without copying the data.
+of the source buffers.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GstBuffer which is the concatenation</doc>
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="buf2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the second source #GstBuffer to merge.</doc>
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_caps" c:identifier="gst_buffer_set_caps">
+        <doc xml:whitespace="preserve">Sets the media type on the buffer. The refcount of the caps will
+be increased and any previous caps on the buffer will be
+unreffed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstCaps.</doc>
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="span" c:identifier="gst_buffer_span">
+        <doc xml:whitespace="preserve">Creates a new buffer that consists of part of buf1 and buf2.
+Logically, buf1 and buf2 are concatenated into a single larger
+buffer, and a new buffer is created at the given offset inside
+this space, with a given length.
+If the two source buffers are children of the same larger buffer,
+and are contiguous, the new buffer will be a child of the shared
+parent, and thus no copying is necessary. you can use
+gst_buffer_is_span_fast() to determine if a memcpy will be needed.
+MT safe.
+buffers, or NULL if the arguments are invalid.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GstBuffer that spans the two source</doc>
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the offset in the first buffer from where the new buffer should start.</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="buf2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the second source #GstBuffer to merge.</doc>
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the total length of the new buffer.</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="stamp"
+              c:identifier="gst_buffer_stamp"
+              deprecated="use gst_buffer_copy_metadata() instead, it provides more">
+        <doc xml:whitespace="preserve">Copies additional information (the timestamp, duration, and offset start
+and end) from one buffer to the other.
+This function does not copy any buffer flags or caps and is equivalent to
+gst_buffer_copy_metadata(@dest, @src, GST_BUFFER_COPY_TIMESTAMPS).
+control.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <doc xml:whitespace="preserve">buffer to stamp from</doc>
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="mini_object">
+        <type name="MiniObject" c:type="GstMiniObject"/>
+      </field>
+      <field name="data">
+        <type name="guint8" c:type="guint8*"/>
+      </field>
+      <field name="size">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="timestamp">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="duration">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="caps">
+        <type name="Caps" c:type="GstCaps*"/>
+      </field>
+      <field name="offset">
+        <type name="guint64" c:type="guint64"/>
+      </field>
+      <field name="offset_end">
+        <type name="guint64" c:type="guint64"/>
+      </field>
+      <field name="malloc_data">
+        <type name="guint8" c:type="guint8*"/>
+      </field>
+      <field name="free_func">
+        <type name="GLib.FreeFunc" c:type="GFreeFunc"/>
+      </field>
+      <field name="parent">
+        <type name="Buffer" c:type="GstBuffer*"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </class>
+    <record name="BufferClass"
+            c:type="GstBufferClass"
+            glib:is-gtype-struct-for="Buffer">
+      <field name="mini_object_class">
+        <type name="MiniObjectClass" c:type="GstMiniObjectClass"/>
+      </field>
+    </record>
+    <bitfield name="BufferCopyFlags"
+              version="0.10.13"
+              c:type="GstBufferCopyFlags">
+      <doc xml:whitespace="preserve">A set of flags that can be provided to the gst_buffer_copy_metadata()
+function to specify which metadata fields should be copied.</doc>
+      <member name="flags" value="1" c:identifier="GST_BUFFER_COPY_FLAGS"/>
+      <member name="timestamps"
+              value="2"
+              c:identifier="GST_BUFFER_COPY_TIMESTAMPS"/>
+      <member name="caps" value="4" c:identifier="GST_BUFFER_COPY_CAPS"/>
+    </bitfield>
+    <bitfield name="BufferFlag" c:type="GstBufferFlag">
+      <doc xml:whitespace="preserve">A set of buffer flags used to describe properties of a #GstBuffer.</doc>
+      <member name="readonly"
+              value="1"
+              c:identifier="GST_BUFFER_FLAG_READONLY"/>
+      <member name="media4" value="2" c:identifier="GST_BUFFER_FLAG_MEDIA4"/>
+      <member name="preroll"
+              value="16"
+              c:identifier="GST_BUFFER_FLAG_PREROLL"/>
+      <member name="discont"
+              value="32"
+              c:identifier="GST_BUFFER_FLAG_DISCONT"/>
+      <member name="in_caps"
+              value="64"
+              c:identifier="GST_BUFFER_FLAG_IN_CAPS"/>
+      <member name="gap" value="128" c:identifier="GST_BUFFER_FLAG_GAP"/>
+      <member name="delta_unit"
+              value="256"
+              c:identifier="GST_BUFFER_FLAG_DELTA_UNIT"/>
+      <member name="media1" value="512" c:identifier="GST_BUFFER_FLAG_MEDIA1"/>
+      <member name="media2"
+              value="1024"
+              c:identifier="GST_BUFFER_FLAG_MEDIA2"/>
+      <member name="media3"
+              value="2048"
+              c:identifier="GST_BUFFER_FLAG_MEDIA3"/>
+      <member name="last" value="4096" c:identifier="GST_BUFFER_FLAG_LAST"/>
+    </bitfield>
+    <class name="BufferList"
+           c:symbol-prefix="buffer_list"
+           c:type="GstBufferList"
+           version="0.10.24"
+           parent="MiniObject"
+           glib:type-name="GstBufferList"
+           glib:get-type="gst_buffer_list_get_type"
+           glib:type-struct="BufferListClass"
+           glib:fundamental="1">
+      <doc xml:whitespace="preserve">Buffer lists are units of grouped scatter/gather data transfer in
+GStreamer.
+Buffer lists are created with gst_buffer_list_new() and filled with data
+using a #GstBufferListIterator. The iterator has no current buffer; its
+cursor position lies between buffers, immediately before the buffer that
+would be returned by gst_buffer_list_iterator_next(). After iterating to the
+end of a group the iterator must be advanced to the next group by a call to
+gst_buffer_list_iterator_next_group() before any further calls to
+gst_buffer_list_iterator_next() can return buffers again. The cursor position
+of a newly created iterator lies before the first group; a call to
+gst_buffer_list_iterator_next_group() is necessary before calls to
+gst_buffer_list_iterator_next() can return buffers.
+&lt;informalfigure&gt;
+&lt;programlisting&gt;
++--- group0 ----------------------+--- group1 ------------+
+|   buffer0   buffer1   buffer2   |   buffer3   buffer4   |
+^   ^         ^         ^         ^   ^         ^         ^
+Iterator positions between buffers
+&lt;/programlisting&gt;
+&lt;/informalfigure&gt;
+The gst_buffer_list_iterator_remove(), gst_buffer_list_iterator_steal(),
+gst_buffer_list_iterator_take() and gst_buffer_list_iterator_do() functions
+are not defined in terms of the cursor position; they operate on the last
+element returned from gst_buffer_list_iterator_next().
+The basic use pattern of creating a buffer list with an iterator is as
+follows:
+&lt;example&gt;
+&lt;title&gt;Creating a buffer list&lt;/title&gt;
+&lt;programlisting&gt;
+GstBufferList *list;
+GstBufferListIterator *it;
+list = gst_buffer_list_new ();
+it = gst_buffer_list_iterate (list);
+gst_buffer_list_iterator_add_group (it);
+gst_buffer_list_iterator_add (it, header1);
+gst_buffer_list_iterator_add (it, data1);
+gst_buffer_list_iterator_add_group (it);
+gst_buffer_list_iterator_add (it, header2);
+gst_buffer_list_iterator_add (it, data2);
+gst_buffer_list_iterator_add_group (it);
+gst_buffer_list_iterator_add (it, header3);
+gst_buffer_list_iterator_add (it, data3);
+...
+gst_buffer_list_iterator_free (it);
+&lt;/programlisting&gt;
+&lt;/example&gt;
+The basic use pattern of iterating over a buffer list is as follows:
+&lt;example&gt;
+&lt;title&gt;Iterating a buffer list&lt;/title&gt;
+&lt;programlisting&gt;
+GstBufferListIterator *it;
+it = gst_buffer_list_iterate (list);
+while (gst_buffer_list_iterator_next_group (it)) {
+while ((buffer = gst_buffer_list_iterator_next (it)) != NULL) {
+do_something_with_buffer (buffer);
+}
+}
+gst_buffer_list_iterator_free (it);
+&lt;/programlisting&gt;
+&lt;/example&gt;
+The basic use pattern of modifying a buffer in a list is as follows:
+&lt;example&gt;
+&lt;title&gt;Modifying the data of the first buffer in a list&lt;/title&gt;
+&lt;programlisting&gt;
+GstBufferListIterator *it;
+list = gst_buffer_list_make_writable (list);
+it = gst_buffer_list_iterate (list);
+if (gst_buffer_list_iterator_next_group (it)) {
+GstBuffer *buf
+buf = gst_buffer_list_iterator_next (it);
+if (buf != NULL) {
+buf = gst_buffer_list_iterator_do (it,
+(GstBufferListDoFunction) gst_mini_object_make_writable, NULL);
+modify_data (GST_BUFFER_DATA (buf));
+}
+}
+gst_buffer_list_iterator_free (it);
+&lt;/programlisting&gt;
+&lt;/example&gt;</doc>
+      <constructor name="new"
+                   c:identifier="gst_buffer_list_new"
+                   version="0.10.24">
+        <doc xml:whitespace="preserve">Creates a new, empty #GstBufferList. The caller is responsible for unreffing
+the returned #GstBufferList.
+after usage.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GstBufferList. gst_buffer_list_unref()</doc>
+          <type name="BufferList" c:type="GstBufferList*"/>
+        </return-value>
+      </constructor>
+      <method name="foreach"
+              c:identifier="gst_buffer_list_foreach"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Call @func with @data for each buffer in @list.
+of @func define if this function returns or if the remaining buffers in a
+group should be skipped.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">a #GstBufferListFunc to call</doc>
+            <type name="BufferListFunc" c:type="GstBufferListFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data passed to @func</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get" c:identifier="gst_buffer_list_get" version="0.10.24">
+        <doc xml:whitespace="preserve">Get the buffer at @idx in @group.
+Note that this function is not efficient for iterating over the entire list.
+Use an iterator or gst_buffer_list_foreach() instead.
+is no buffer. The buffer remains valid as long as @list is valid.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the buffer at @idx in @group or NULL when there</doc>
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the group</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="idx" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index in @group</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iterate"
+              c:identifier="gst_buffer_list_iterate"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Iterate the buffers in @list. The owner of the iterator must also be the
+owner of a reference to @list while the returned iterator is in use.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstBufferListIterator of the buffers in</doc>
+          <type name="BufferListIterator" c:type="GstBufferListIterator*"/>
+        </return-value>
+      </method>
+      <method name="n_groups"
+              c:identifier="gst_buffer_list_n_groups"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Returns the number of groups in @list.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of groups in the buffer list</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+    </class>
+    <record name="BufferListClass"
+            c:type="GstBufferListClass"
+            disguised="1"
+            glib:is-gtype-struct-for="BufferList">
+    </record>
+    <callback name="BufferListDoFunction"
+              c:type="GstBufferListDoFunction"
+              version="0.10.24">
+      <doc xml:whitespace="preserve">A function for accessing the last buffer returned by
+gst_buffer_list_iterator_next(). The function can leave @buffer in the list,
+replace @buffer in the list or remove @buffer from the list, depending on
+the return value. If the function returns NULL, @buffer will be removed from
+the list, otherwise @buffer will be replaced with the returned buffer.
+The last buffer returned by gst_buffer_list_iterator_next() will be replaced
+with the buffer returned from the function. The function takes ownership of
+unreffed. If NULL is returned, the buffer will be removed from the list. The
+list must be writable.
+to remove @buffer from the list</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">the buffer to replace @buffer in the list, or NULL</doc>
+        <type name="Buffer" c:type="GstBuffer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #GstBuffer</doc>
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <doc xml:whitespace="preserve">user data</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="BufferListFunc"
+              c:type="GstBufferListFunc"
+              version="0.10.24">
+      <doc xml:whitespace="preserve">A function that will be called from gst_buffer_list_foreach(). The @buffer
+field will point to a the reference of the buffer at @idx in @group.
+When this function returns #GST_BUFFER_LIST_CONTINUE, the next buffer will be
+returned. When #GST_BUFFER_LIST_SKIP_GROUP is returned, all remaining buffers
+in the current group will be skipped and the first buffer of the next group
+is returned (if any). When GST_BUFFER_LIST_END is returned,
+gst_buffer_list_foreach() will return.
+When @buffer is set to NULL, the item will be removed from the bufferlist.
+When @buffer has been made writable, the new buffer reference can be assigned
+to @buffer. This function is responsible for unreffing the old buffer when
+removing or modifying.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a #GstBufferListItem</doc>
+        <type name="BufferListItem" c:type="GstBufferListItem"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:whitespace="preserve">pointer the buffer</doc>
+          <type name="Buffer" c:type="GstBuffer**"/>
+        </parameter>
+        <parameter name="group" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the group index of @buffer</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="idx" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the index in @group of @buffer</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <doc xml:whitespace="preserve">user data passed to gst_buffer_list_foreach()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="BufferListItem"
+                 version="0.10.24"
+                 c:type="GstBufferListItem">
+      <doc xml:whitespace="preserve">The result of the #GstBufferListFunc.</doc>
+      <member name="continue"
+              value="0"
+              c:identifier="GST_BUFFER_LIST_CONTINUE"/>
+      <member name="skip_group"
+              value="1"
+              c:identifier="GST_BUFFER_LIST_SKIP_GROUP"/>
+      <member name="end" value="2" c:identifier="GST_BUFFER_LIST_END"/>
+    </enumeration>
+    <record name="BufferListIterator"
+            c:type="GstBufferListIterator"
+            version="0.10.24"
+            glib:type-name="GstBufferListIterator"
+            glib:get-type="gst_buffer_list_iterator_get_type"
+            c:symbol-prefix="buffer_list_iterator">
+      <doc xml:whitespace="preserve">Opaque iterator for a #GstBufferList.</doc>
+      <method name="add"
+              c:identifier="gst_buffer_list_iterator_add"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Inserts @buffer into the #GstBufferList iterated with @it. The buffer is
+inserted into the current group, immediately before the buffer that would be
+returned by gst_buffer_list_iterator_next(). The buffer is inserted before
+the implicit cursor, a subsequent call to gst_buffer_list_iterator_next()
+will return the buffer after the inserted buffer, if any.
+This function takes ownership of @buffer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GstBuffer</doc>
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_group"
+              c:identifier="gst_buffer_list_iterator_add_group"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Inserts a new, empty group into the #GstBufferList iterated with @it. The
+group is inserted immediately before the group that would be returned by
+gst_buffer_list_iterator_next_group(). A subsequent call to
+gst_buffer_list_iterator_next_group() will advance the iterator to the group
+after the inserted group, if any.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="add_list"
+              c:identifier="gst_buffer_list_iterator_add_list"
+              version="0.10.31">
+        <doc xml:whitespace="preserve">Inserts @list of buffers into the #GstBufferList iterated with @it. The list is
+inserted into the current group, immediately before the buffer that would be
+returned by gst_buffer_list_iterator_next(). The list is inserted before
+the implicit cursor, a subsequent call to gst_buffer_list_iterator_next()
+will return the buffer after the last buffer of the inserted list, if any.
+This function takes ownership of @list and all its buffers.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GList of buffers</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="Buffer"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="do"
+              c:identifier="gst_buffer_list_iterator_do"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Calls the given function for the last buffer returned by
+gst_buffer_list_iterator_next(). gst_buffer_list_iterator_next() must have
+been called on @it before this function is called.
+gst_buffer_list_iterator_remove() and gst_buffer_list_iterator_steal() must
+not have been called since the last call to gst_buffer_list_iterator_next().
+See #GstBufferListDoFunction for more details.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the return value from @do_func</doc>
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="do_func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">the function to be called</doc>
+            <type name="BufferListDoFunction"
+                  c:type="GstBufferListDoFunction"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the gpointer to optional user data.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free"
+              c:identifier="gst_buffer_list_iterator_free"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Free the iterator.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="merge_group"
+              c:identifier="gst_buffer_list_iterator_merge_group"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Merge a buffer list group into a normal #GstBuffer by copying its metadata
+and memcpying its data into consecutive memory. All buffers in the current
+group after the implicit cursor will be merged into one new buffer. The
+metadata of the new buffer will be a copy of the metadata of the buffer that
+would be returned by gst_buffer_list_iterator_next(). If there is no buffer
+in the current group after the implicit cursor, NULL will be returned.
+This function will not move the implicit cursor or in any other way affect
+the state of the iterator @it or the list.
+or NULL</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstBuffer, gst_buffer_unref() after usage,</doc>
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+      </method>
+      <method name="n_buffers"
+              c:identifier="gst_buffer_list_iterator_n_buffers"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Returns the number of buffers left to iterate in the current group. I.e. the
+number of calls that can be made to gst_buffer_list_iterator_next() before
+it returns NULL.
+This function will not move the implicit cursor or in any other way affect
+the state of the iterator @it.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of buffers left to iterate in the current group</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="next"
+              c:identifier="gst_buffer_list_iterator_next"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Returns the next buffer in the list iterated with @it. If the iterator is at
+the end of a group, NULL will be returned. This function may be called
+repeatedly to iterate through the current group.
+The caller will not get a new ref to the returned #GstBuffer and must not
+unref it.
+buffer list, or NULL</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the next buffer in the current group of the</doc>
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+      </method>
+      <method name="next_group"
+              c:identifier="gst_buffer_list_iterator_next_group"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Advance the iterator @it to the first buffer in the next group. If the
+iterator is at the last group, FALSE will be returned. This function may be
+called repeatedly to iterate through the groups in a buffer list.
+the iterator was already at the last group</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the iterator could be advanced to the next group, FALSE if</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="remove"
+              c:identifier="gst_buffer_list_iterator_remove"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Removes the last buffer returned by gst_buffer_list_iterator_next() from
+the #GstBufferList iterated with @it. gst_buffer_list_iterator_next() must
+have been called on @it before this function is called. This function can
+only be called once per call to gst_buffer_list_iterator_next().
+The removed buffer is unreffed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="steal"
+              c:identifier="gst_buffer_list_iterator_steal"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Returns the last buffer returned by gst_buffer_list_iterator_next() without
+modifying the refcount of the buffer.
+gst_buffer_list_iterator_next()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the last buffer returned by</doc>
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+      </method>
+      <method name="take"
+              c:identifier="gst_buffer_list_iterator_take"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Replaces the last buffer returned by gst_buffer_list_iterator_next() with
+this function is called. gst_buffer_list_iterator_remove() must not have been
+called since the last call to gst_buffer_list_iterator_next().
+This function unrefs the replaced buffer if it has not been stolen with
+gst_buffer_list_iterator_steal() and takes ownership of @buffer (i.e. the
+refcount of @buffer is not increased).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GstBuffer</doc>
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <enumeration name="BufferingMode" c:type="GstBufferingMode">
+      <doc xml:whitespace="preserve">The different types of buffering methods.</doc>
+      <member name="stream" value="0" c:identifier="GST_BUFFERING_STREAM"/>
+      <member name="download" value="1" c:identifier="GST_BUFFERING_DOWNLOAD"/>
+      <member name="timeshift"
+              value="2"
+              c:identifier="GST_BUFFERING_TIMESHIFT"/>
+      <member name="live" value="3" c:identifier="GST_BUFFERING_LIVE"/>
+    </enumeration>
+    <class name="Bus"
+           c:symbol-prefix="bus"
+           c:type="GstBus"
+           parent="Object"
+           glib:type-name="GstBus"
+           glib:get-type="gst_bus_get_type"
+           glib:type-struct="BusClass">
+      <doc xml:whitespace="preserve">The #GstBus is an object responsible for delivering #GstMessage packets in
+a first-in first-out way from the streaming threads (see #GstTask) to the
+application.
+Since the application typically only wants to deal with delivery of these
+messages from one thread, the GstBus will marshall the messages between
+different threads. This is important since the actual streaming of media
+is done in another thread than the application.
+The GstBus provides support for #GSource based notifications. This makes it
+possible to handle the delivery in the glib mainloop.
+The #GSource callback function gst_bus_async_signal_func() can be used to
+convert all bus messages into signal emissions.
+A message is posted on the bus with the gst_bus_post() method. With the
+gst_bus_peek() and gst_bus_pop() methods one can look at or retrieve a
+previously posted message.
+The bus can be polled with the gst_bus_poll() method. This methods blocks
+up to the specified timeout value until one of the specified messages types
+is posted on the bus. The application can then gst_bus_pop() the messages
+from the bus to handle them.
+Alternatively the application can register an asynchronous bus function
+using gst_bus_add_watch_full() or gst_bus_add_watch(). This function will
+install a #GSource in the default glib main loop and will deliver messages
+a short while after they have been posted. Note that the main loop should
+be running for the asynchronous callbacks.
+It is also possible to get messages from the bus without any thread
+marshalling with the gst_bus_set_sync_handler() method. This makes it
+possible to react to a message in the same thread that posted the
+message on the bus. This should only be used if the application is able
+to deal with messages from different threads.
+Every #GstPipeline has one bus.
+Note that a #GstPipeline will set its bus into flushing state when changing
+from READY to NULL state.
+Last reviewed on 2006-03-12 (0.10.5)</doc>
+      <constructor name="new" c:identifier="gst_bus_new">
+        <doc xml:whitespace="preserve">Creates a new #GstBus instance.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstBus instance</doc>
+          <type name="Bus" c:type="GstBus*"/>
+        </return-value>
+      </constructor>
+      <virtual-method name="message">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <type name="Message" c:type="GstMessage*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="sync_message">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <type name="Message" c:type="GstMessage*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="add_signal_watch" c:identifier="gst_bus_add_signal_watch">
+        <doc xml:whitespace="preserve">Adds a bus signal watch to the default main context with the default priority
+(%G_PRIORITY_DEFAULT). Since 0.10.33 it is also possible to use a non-default
+main context set up using g_main_context_push_thread_default() (before
+one had to create a bus watch source and attach it to the desired main
+context 'manually').
+After calling this statement, the bus will emit the "message" signal for each
+message posted on the bus.
+This function may be called multiple times. To clean up, the caller is
+responsible for calling gst_bus_remove_signal_watch() as many times as this
+function is called.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="add_signal_watch_full"
+              c:identifier="gst_bus_add_signal_watch_full">
+        <doc xml:whitespace="preserve">Adds a bus signal watch to the default main context with the given @priority
+(e.g. %G_PRIORITY_DEFAULT). Since 0.10.33 it is also possible to use a
+non-default main context set up using g_main_context_push_thread_default()
+(before one had to create a bus watch source and attach it to the desired
+main context 'manually').
+After calling this statement, the bus will emit the "message" signal for each
+message posted on the bus when the main loop is running.
+This function may be called multiple times. To clean up, the caller is
+responsible for calling gst_bus_remove_signal_watch() as many times as this
+function is called.
+There can only be a single bus watch per bus, you most remove all signal watch
+before you can set another type of watch.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The priority of the watch.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_watch"
+              c:identifier="gst_bus_add_watch"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Adds a bus watch to the default main context with the default priority
+(%G_PRIORITY_DEFAULT). Since 0.10.33 it is also possible to use a non-default
+main context set up using g_main_context_push_thread_default() (before
+one had to create a bus watch source and attach it to the desired main
+context 'manually').
+This function is used to receive asynchronous messages in the main loop.
+There can only be a single bus watch per bus, you must remove it before you
+can set a new one.
+The watch can be removed using g_source_remove() or by returning FALSE
+from @func.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The event source id.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none" closure="1">
+            <doc xml:whitespace="preserve">A function to call when a message is received.</doc>
+            <type name="BusFunc" c:type="GstBusFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data passed to @func.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_watch_full" c:identifier="gst_bus_add_watch_full">
+        <doc xml:whitespace="preserve">Adds a bus watch to the default main context with the given @priority (e.g.
+%G_PRIORITY_DEFAULT). Since 0.10.33 it is also possible to use a non-default
+main context set up using g_main_context_push_thread_default() (before
+one had to create a bus watch source and attach it to the desired main
+context 'manually').
+This function is used to receive asynchronous messages in the main loop.
+There can only be a single bus watch per bus, you must remove it before you
+can set a new one.
+When @func is called, the message belongs to the caller; if you want to
+keep a copy of it, call gst_message_ref() before leaving @func.
+The watch can be removed using g_source_remove() or by returning FALSE
+from @func.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The event source id.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The priority of the watch.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <doc xml:whitespace="preserve">A function to call when a message is received.</doc>
+            <type name="BusFunc" c:type="GstBusFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data passed to @func.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">the function to call when the source is removed.</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="async_signal_func"
+              c:identifier="gst_bus_async_signal_func">
+        <doc xml:whitespace="preserve">A helper #GstBusFunc that can be used to convert all asynchronous messages
+into signals.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstMessage received</doc>
+            <type name="Message" c:type="GstMessage*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_watch"
+              c:identifier="gst_bus_create_watch"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Create watch for this bus. The GSource will be dispatched whenever
+a message is on the bus. After the GSource is dispatched, the
+message is popped off the bus and unreffed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GSource that can be added to a mainloop.</doc>
+          <type name="GLib.Source" c:type="GSource*"/>
+        </return-value>
+      </method>
+      <method name="disable_sync_message_emission"
+              c:identifier="gst_bus_disable_sync_message_emission">
+        <doc xml:whitespace="preserve">Instructs GStreamer to stop emitting the "sync-message" signal for this bus.
+See gst_bus_enable_sync_message_emission() for more information.
+In the event that multiple pieces of code have called
+gst_bus_enable_sync_message_emission(), the sync-message emissions will only
+be stopped after all calls to gst_bus_enable_sync_message_emission() were
+"cancelled" by calling this function. In this way the semantics are exactly
+the same as gst_object_ref() that which calls enable should also call
+disable.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="enable_sync_message_emission"
+              c:identifier="gst_bus_enable_sync_message_emission">
+        <doc xml:whitespace="preserve">Instructs GStreamer to emit the "sync-message" signal after running the bus's
+sync handler. This function is here so that code can ensure that they can
+synchronously receive messages without having to affect what the bin's sync
+handler is.
+This function may be called multiple times. To clean up, the caller is
+responsible for calling gst_bus_disable_sync_message_emission() as many times
+as this function is called.
+While this function looks similar to gst_bus_add_signal_watch(), it is not
+exactly the same -- this function enables &lt;emphasis&gt;synchronous&lt;/emphasis&gt; emission of
+signals when messages arrive; gst_bus_add_signal_watch() adds an idle callback
+to pop messages off the bus &lt;emphasis&gt;asynchronously&lt;/emphasis&gt;. The sync-message signal
+comes from the thread of whatever object posted the message; the "message"
+signal is marshalled to the main thread via the main loop.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="have_pending" c:identifier="gst_bus_have_pending">
+        <doc xml:whitespace="preserve">Check if there are pending messages on the bus that
+should be handled.
+otherwise.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if there are messages on the bus to be handled, FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="peek" c:identifier="gst_bus_peek">
+        <doc xml:whitespace="preserve">Peek the message on the top of the bus' queue. The message will remain
+on the bus' message queue. A reference is returned, and needs to be unreffed
+by the caller.
+bus is empty.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #GstMessage that is on the bus, or NULL if the</doc>
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+      </method>
+      <method name="poll" c:identifier="gst_bus_poll">
+        <doc xml:whitespace="preserve">Poll the bus for messages. Will block while waiting for messages to come.
+You can specify a maximum time to poll with the @timeout parameter. If
+All messages not in @events will be popped off the bus and will be ignored.
+Because poll is implemented using the "message" signal enabled by
+gst_bus_add_signal_watch(), calling gst_bus_poll() will cause the "message"
+signal to be emitted for every message that poll sees. Thus a "message"
+signal handler will see the same messages that this function sees -- neither
+will steal messages from the other.
+This function will run a main loop from the default main context when
+polling.
+You should never use this function, since it is pure evil. This is
+especially true for GUI applications based on Gtk+ or Qt, but also for any
+other non-trivial application that uses the GLib main loop. As this function
+runs a GLib main loop, any callback attached to the default GLib main
+context may be invoked. This could be timeouts, GUI events, I/O events etc.;
+even if gst_bus_poll() is called with a 0 timeout. Any of these callbacks
+may do things you do not expect, e.g. destroy the main application window or
+some other resource; change other application state; display a dialog and
+run another main loop until the user clicks it away. In short, using this
+function may add a lot of complexity to your code through unexpected
+re-entrancy and unexpected changes to your application's state.
+For 0 timeouts use gst_bus_pop_filtered() instead of this function; for
+other short timeouts use gst_bus_timed_pop_filtered(); everything else is
+better handled by setting up an asynchronous bus watch and doing things
+from there.
+poll timed out. The message is taken from the bus and needs to be
+unreffed with gst_message_unref() after usage.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the message that was received, or NULL if the</doc>
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="events" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a mask of #GstMessageType, representing the set of message types to poll for.</doc>
+            <type name="MessageType" c:type="GstMessageType"/>
+          </parameter>
+          <parameter name="timeout" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the poll timeout, as a #GstClockTimeDiff, or -1 to poll indefinitely.</doc>
+            <type name="ClockTimeDiff" c:type="GstClockTimeDiff"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pop" c:identifier="gst_bus_pop">
+        <doc xml:whitespace="preserve">Get a message from the bus.
+bus is empty. The message is taken from the bus and needs to be unreffed
+with gst_message_unref() after usage.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #GstMessage that is on the bus, or NULL if the</doc>
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+      </method>
+      <method name="pop_filtered"
+              c:identifier="gst_bus_pop_filtered"
+              version="0.10.15">
+        <doc xml:whitespace="preserve">Get a message matching @type from the bus.  Will discard all messages on
+the bus that do not match @type and that have been posted before the first
+message that does match @type.  If there is no message matching @type on
+the bus, all messages will be discarded.
+the bus, or NULL if the bus is empty or there is no message matching
+gst_message_unref() after usage.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the next #GstMessage matching @type that is on</doc>
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="types" transfer-ownership="none">
+            <doc xml:whitespace="preserve">message types to take into account</doc>
+            <type name="MessageType" c:type="GstMessageType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="post" c:identifier="gst_bus_post">
+        <doc xml:whitespace="preserve">Post a message on the given bus. Ownership of the message
+is taken by the bus.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the message could be posted, FALSE if the bus is flushing.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="full">
+            <doc xml:whitespace="preserve">the #GstMessage to post</doc>
+            <type name="Message" c:type="GstMessage*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_signal_watch"
+              c:identifier="gst_bus_remove_signal_watch">
+        <doc xml:whitespace="preserve">Removes a signal watch previously added with gst_bus_add_signal_watch().
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_flushing" c:identifier="gst_bus_set_flushing">
+        <doc xml:whitespace="preserve">If @flushing, flush out and unref any messages queued in the bus. Releases
+references to the message origin objects. Will flush future messages until
+gst_bus_set_flushing() sets @flushing to #FALSE.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flushing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether or not to flush the bus</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sync_handler"
+              c:identifier="gst_bus_set_sync_handler"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets the synchronous handler on the bus. The function will be called
+every time a new message is posted on the bus. Note that the function
+will be called in the same thread context as the posting object. This
+function is usually only called by the creator of the bus. Applications
+should handle messages asynchronously using the gst_bus watch and poll
+functions.
+You cannot replace an existing sync_handler. You can pass NULL to this
+function, which will clear the existing handler.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none" closure="1">
+            <doc xml:whitespace="preserve">The handler function to install</doc>
+            <type name="BusSyncHandler" c:type="GstBusSyncHandler"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">User data that will be sent to the handler function.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sync_signal_handler"
+              c:identifier="gst_bus_sync_signal_handler">
+        <doc xml:whitespace="preserve">A helper GstBusSyncHandler that can be used to convert all synchronous
+messages into signals.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">GST_BUS_PASS</doc>
+          <type name="BusSyncReply" c:type="GstBusSyncReply"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstMessage received</doc>
+            <type name="Message" c:type="GstMessage*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="timed_pop"
+              c:identifier="gst_bus_timed_pop"
+              version="0.10.12">
+        <doc xml:whitespace="preserve">Get a message from the bus, waiting up to the specified timeout.
+If @timeout is 0, this function behaves like gst_bus_pop(). If @timeout is
+#GST_CLOCK_TIME_NONE, this function will block forever until a message was
+posted on the bus.
+specified timeout or NULL if the bus is empty after the timeout expired.
+The message is taken from the bus and needs to be unreffed with
+gst_message_unref() after usage.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #GstMessage that is on the bus after the</doc>
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeout" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a timeout</doc>
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="timed_pop_filtered"
+              c:identifier="gst_bus_timed_pop_filtered"
+              version="0.10.15">
+        <doc xml:whitespace="preserve">Get a message from the bus whose type matches the message type mask @types,
+waiting up to the specified timeout (and discarding any messages that do not
+match the mask provided).
+If @timeout is 0, this function behaves like gst_bus_pop_filtered(). If
+matching message was posted on the bus.
+or NULL if no matching message was found on the bus until the timeout
+expired. The message is taken from the bus and needs to be unreffed
+with gst_message_unref() after usage.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GstMessage matching the filter in @types,</doc>
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeout" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a timeout in nanoseconds, or GST_CLOCK_TIME_NONE to wait forever</doc>
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="types" transfer-ownership="none">
+            <doc xml:whitespace="preserve">message types to take into account, GST_MESSAGE_ANY for any type</doc>
+            <type name="MessageType" c:type="GstMessageType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="queue" readable="0" private="1">
+        <type name="GLib.Queue" c:type="GQueue*"/>
+      </field>
+      <field name="queue_lock" readable="0" private="1">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="sync_handler" readable="0" private="1">
+        <type name="BusSyncHandler" c:type="GstBusSyncHandler"/>
+      </field>
+      <field name="sync_handler_data" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="signal_watch_id" readable="0" private="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="num_signal_watchers" readable="0" private="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="BusPrivate" c:type="GstBusPrivate*"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+      <glib:signal name="message">
+        <doc xml:whitespace="preserve">A message has been posted on the bus. This signal is emitted from a
+GSource added to the mainloop. this signal will only be emitted when
+there is a mainloop running.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the message that has been posted asynchronously</doc>
+            <type name="Message"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="sync-message">
+        <doc xml:whitespace="preserve">A message has been posted on the bus. This signal is emitted from the
+thread that posted the message so one has to be careful with locking.
+This signal will not be emitted by default, you have to set up
+gst_bus_sync_signal_handler() as a sync handler if you want this
+signal to be emitted when a message is posted on the bus, like this:
+&lt;programlisting&gt;
+gst_bus_set_sync_handler (bus, gst_bus_sync_signal_handler, yourdata);
+&lt;/programlisting&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the message that has been posted synchronously</doc>
+            <type name="Message"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="BusClass"
+            c:type="GstBusClass"
+            glib:is-gtype-struct-for="Bus">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="message">
+        <callback name="message">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="bus" transfer-ownership="none">
+              <type name="Bus" c:type="GstBus*"/>
+            </parameter>
+            <parameter name="message" transfer-ownership="none">
+              <type name="Message" c:type="GstMessage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="sync_message">
+        <callback name="sync_message">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="bus" transfer-ownership="none">
+              <type name="Bus" c:type="GstBus*"/>
+            </parameter>
+            <parameter name="message" transfer-ownership="none">
+              <type name="Message" c:type="GstMessage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="BusFlags" c:type="GstBusFlags">
+      <doc xml:whitespace="preserve">The standard flags that a bus may have.</doc>
+      <member name="flushing" value="16" c:identifier="GST_BUS_FLUSHING"/>
+      <member name="flag_last" value="32" c:identifier="GST_BUS_FLAG_LAST"/>
+    </bitfield>
+    <callback name="BusFunc" c:type="GstBusFunc">
+      <doc xml:whitespace="preserve">Specifies the type of function passed to gst_bus_add_watch() or
+gst_bus_add_watch_full(), which is called from the mainloop when a message
+is available on the bus.
+The message passed to the function will be unreffed after execution of this
+function so it should not be freed in the function.
+Note that this function is used as a GSourceFunc which means that returning
+FALSE will remove the GSource from the mainloop.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%FALSE if the event source should be removed.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="bus" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstBus that sent the message</doc>
+          <type name="Bus" c:type="GstBus*"/>
+        </parameter>
+        <parameter name="message" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstMessage</doc>
+          <type name="Message" c:type="GstMessage*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">user data that has been given, when registering the handler</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="BusPrivate" c:type="GstBusPrivate" disguised="1">
+    </record>
+    <callback name="BusSyncHandler" c:type="GstBusSyncHandler">
+      <doc xml:whitespace="preserve">Handler will be invoked synchronously, when a new message has been injected
+into the bus. This function is mostly used internally. Only one sync handler
+can be attached to a given bus.
+If the handler returns GST_BUS_DROP, it should unref the message, else the
+message should not be unreffed by the sync handler.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">#GstBusSyncReply stating what to do with the message</doc>
+        <type name="BusSyncReply" c:type="GstBusSyncReply"/>
+      </return-value>
+      <parameters>
+        <parameter name="bus" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstBus that sent the message</doc>
+          <type name="Bus" c:type="GstBus*"/>
+        </parameter>
+        <parameter name="message" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstMessage</doc>
+          <type name="Message" c:type="GstMessage*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">user data that has been given, when registering the handler</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="BusSyncReply" c:type="GstBusSyncReply">
+      <doc xml:whitespace="preserve">The result values for a GstBusSyncHandler.</doc>
+      <member name="drop" value="0" c:identifier="GST_BUS_DROP"/>
+      <member name="pass" value="1" c:identifier="GST_BUS_PASS"/>
+      <member name="async" value="2" c:identifier="GST_BUS_ASYNC"/>
+    </enumeration>
+    <constant name="CAN_INLINE" value="1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="CLOCK_ENTRY_TRACE_NAME" value="GstClockEntry">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="CLOCK_TIME_NONE" value="-1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <record name="Caps"
+            c:type="GstCaps"
+            glib:type-name="GstCaps"
+            glib:get-type="gst_caps_get_type"
+            c:symbol-prefix="caps">
+      <doc xml:whitespace="preserve">Caps (capabilities) are lighweight refcounted objects describing media types.
+They are composed of an array of #GstStructure.
+Caps are exposed on #GstPadTemplate to describe all possible types a
+given pad can handle. They are also stored in the #GstRegistry along with
+a description of the #GstElement.
+Caps are exposed on the element pads using the gst_pad_get_caps() pad
+function. This function describes the possible types that the pad can
+handle or produce at runtime.
+Caps are also attached to buffers to describe to content of the data
+pointed to by the buffer with gst_buffer_set_caps(). Caps attached to
+a #GstBuffer allow for format negotiation upstream and downstream.
+A #GstCaps can be constructed with the following code fragment:
+&lt;example&gt;
+&lt;title&gt;Creating caps&lt;/title&gt;
+&lt;programlisting&gt;
+GstCaps *caps;
+caps = gst_caps_new_simple ("video/x-raw-yuv",
+"format", GST_TYPE_FOURCC, GST_MAKE_FOURCC ('I', '4', '2', '0'),
+"framerate", GST_TYPE_FRACTION, 25, 1,
+"pixel-aspect-ratio", GST_TYPE_FRACTION, 1, 1,
+"width", G_TYPE_INT, 320,
+"height", G_TYPE_INT, 240,
+NULL);
+&lt;/programlisting&gt;
+&lt;/example&gt;
+A #GstCaps is fixed when it has no properties with ranges or lists. Use
+gst_caps_is_fixed() to test for fixed caps. Only fixed caps can be
+set on a #GstPad or #GstBuffer.
+Various methods exist to work with the media types such as subtracting
+or intersecting.
+Last reviewed on 2007-02-13 (0.10.10)</doc>
+      <field name="type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="refcount" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="CapsFlags" c:type="GstCapsFlags"/>
+      </field>
+      <field name="structs" readable="0" private="1">
+        <array name="GLib.PtrArray" c:type="GPtrArray*">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+      <constructor name="new_any" c:identifier="gst_caps_new_any">
+        <doc xml:whitespace="preserve">Creates a new #GstCaps that indicates that it is compatible with
+any media format.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GstCaps</doc>
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_empty" c:identifier="gst_caps_new_empty">
+        <doc xml:whitespace="preserve">Creates a new #GstCaps that is empty.  That is, the returned
+#GstCaps contains no media formats.
+Caller is responsible for unreffing the returned caps.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GstCaps</doc>
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_full"
+                   c:identifier="gst_caps_new_full"
+                   introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new #GstCaps and adds all the structures listed as
+arguments.  The list must be NULL-terminated.  The structures
+are not copied; the returned #GstCaps owns the structures.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GstCaps</doc>
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+        <parameters>
+          <parameter name="struct1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the first structure to add</doc>
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_full_valist"
+                   c:identifier="gst_caps_new_full_valist"
+                   introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new #GstCaps and adds all the structures listed as
+arguments.  The list must be NULL-terminated.  The structures
+are not copied; the returned #GstCaps owns the structures.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GstCaps</doc>
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+        <parameters>
+          <parameter name="structure" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the first structure to add</doc>
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+          <parameter name="var_args" transfer-ownership="none">
+            <doc xml:whitespace="preserve">additional structures to add</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_simple"
+                   c:identifier="gst_caps_new_simple"
+                   introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new #GstCaps that contains one #GstStructure.  The
+structure is defined by the arguments, which have the same format
+as gst_structure_new().
+Caller is responsible for unreffing the returned caps.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GstCaps</doc>
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+        <parameters>
+          <parameter name="media_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the media type of the structure</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="fieldname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">first field to set</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="append" c:identifier="gst_caps_append">
+        <doc xml:whitespace="preserve">Appends the structures contained in @caps2 to @caps1. The structures in
+freed. If either caps is ANY, the resulting caps will be ANY.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps2" transfer-ownership="full">
+            <doc xml:whitespace="preserve">the #GstCaps to append</doc>
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append_structure" c:identifier="gst_caps_append_structure">
+        <doc xml:whitespace="preserve">Appends @structure to @caps.  The structure is not copied; @caps
+becomes the owner of @structure.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="structure" transfer-ownership="full">
+            <doc xml:whitespace="preserve">the #GstStructure to append</doc>
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="can_intersect"
+              c:identifier="gst_caps_can_intersect"
+              version="0.10.25">
+        <doc xml:whitespace="preserve">Tries intersecting @caps1 and @caps2 and reports whether the result would not
+be empty</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if intersection would be not empty</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstCaps to intersect</doc>
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy" c:identifier="gst_caps_copy">
+        <doc xml:whitespace="preserve">Creates a new #GstCaps as a copy of the old @caps. The new caps will have a
+refcount of 1, owned by the caller. The structures are copied as well.
+Note that this function is the semantic equivalent of a gst_caps_ref()
+followed by a gst_caps_make_writable(). If you only want to hold on to a
+reference to the data, you should use gst_caps_ref().
+When you are finished with the caps, call gst_caps_unref() on it.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GstCaps</doc>
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="copy_nth" c:identifier="gst_caps_copy_nth">
+        <doc xml:whitespace="preserve">Creates a new #GstCaps and appends a copy of the nth structure
+contained in @caps.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GstCaps</doc>
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+        <parameters>
+          <parameter name="nth" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the nth structure to copy</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="do_simplify" c:identifier="gst_caps_do_simplify">
+        <doc xml:whitespace="preserve">Modifies the given @caps inplace into a representation that represents the
+same set of formats, but in a simpler form.  Component structures that are
+identical are merged.  Component structures that have values that can be
+merged are also merged.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if the caps could be simplified</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_size" c:identifier="gst_caps_get_size">
+        <doc xml:whitespace="preserve">Gets the number of structures contained in @caps.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of structures that @caps contains</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_structure" c:identifier="gst_caps_get_structure">
+        <doc xml:whitespace="preserve">Finds the structure in @caps that has the index @index, and
+returns it.
+non-const GstStructure *.  This is for programming convenience --
+the caller should be aware that structures inside a constant
+#GstCaps should not be modified. However, if you know the caps
+are writable, either because you have just copied them or made
+them writable with gst_caps_make_writable(), you may modify the
+structure returned in the usual way, e.g. with functions like
+gst_structure_set().
+You do not need to free or unref the structure returned, it
+belongs to the #GstCaps.
+to @index</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to the #GstStructure corresponding</doc>
+          <type name="Structure" c:type="GstStructure*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index of the structure</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="intersect" c:identifier="gst_caps_intersect">
+        <doc xml:whitespace="preserve">Creates a new #GstCaps that contains all the formats that are common
+to both @caps1 and @caps2. Defaults to %GST_CAPS_INTERSECT_ZIG_ZAG mode.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GstCaps</doc>
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstCaps to intersect</doc>
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="intersect_full"
+              c:identifier="gst_caps_intersect_full"
+              version="0.10.33">
+        <doc xml:whitespace="preserve">Creates a new #GstCaps that contains all the formats that are common
+to both @caps1 and @caps2, the order is defined by the #GstCapsIntersectMode
+used.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GstCaps</doc>
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstCaps to intersect</doc>
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The intersection algorithm/mode to use</doc>
+            <type name="CapsIntersectMode" c:type="GstCapsIntersectMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_always_compatible"
+              c:identifier="gst_caps_is_always_compatible">
+        <doc xml:whitespace="preserve">A given #GstCaps structure is always compatible with another if
+every media format that is in the first is also contained in the
+second.  That is, @caps1 is a subset of @caps2.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if @caps1 is a subset of @caps2.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstCaps to test</doc>
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_any" c:identifier="gst_caps_is_any">
+        <doc xml:whitespace="preserve">Determines if @caps represents any media format.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if @caps represents any format.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_empty" c:identifier="gst_caps_is_empty">
+        <doc xml:whitespace="preserve">Determines if @caps represents no media formats.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if @caps represents no formats.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_equal" c:identifier="gst_caps_is_equal">
+        <doc xml:whitespace="preserve">Checks if the given caps represent the same set of caps.
+&lt;note&gt;This function does not work reliably if optional properties for caps
+are included on one caps and omitted on the other.&lt;/note&gt;
+This function deals correctly with passing NULL for any of the caps.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if both caps are equal.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">another #GstCaps</doc>
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_equal_fixed" c:identifier="gst_caps_is_equal_fixed">
+        <doc xml:whitespace="preserve">Tests if two #GstCaps are equal.  This function only works on fixed
+#GstCaps.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the arguments represent the same format</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstCaps to test</doc>
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_fixed" c:identifier="gst_caps_is_fixed">
+        <doc xml:whitespace="preserve">Fixed #GstCaps describe exactly one format, that is, they have exactly
+one structure, and each field in the structure describes a fixed type.
+Examples of non-fixed types are GST_TYPE_INT_RANGE and GST_TYPE_LIST.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if @caps is fixed</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_subset" c:identifier="gst_caps_is_subset">
+        <doc xml:whitespace="preserve">Checks if all caps represented by @subset are also represented by @superset.
+&lt;note&gt;This function does not work reliably if optional properties for caps
+are included on one caps and omitted on the other.&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @subset is a subset of @superset</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="superset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a potentially greater #GstCaps</doc>
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="make_writable" c:identifier="gst_caps_make_writable">
+        <doc xml:whitespace="preserve">Returns a writable copy of @caps.
+If there is only one reference count on @caps, the caller must be the owner,
+and so this function will return the caps object unchanged. If on the other
+hand there is more than one reference on the object, a new caps object will
+be returned. The caller's reference on @caps will be removed, and instead the
+caller will own a reference to the returned object.
+In short, this function unrefs the caps in the argument and refs the caps
+that it returns. Don't access the argument after calling this function. See</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the same #GstCaps object.</doc>
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="merge" c:identifier="gst_caps_merge" version="0.10.10">
+        <doc xml:whitespace="preserve">Appends the structures contained in @caps2 to @caps1 if they are not yet
+expressed by @caps1. The structures in @caps2 are not copied -- they are
+transferred to @caps1, and then @caps2 is freed.
+If either caps is ANY, the resulting caps will be ANY.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps2" transfer-ownership="full">
+            <doc xml:whitespace="preserve">the #GstCaps to merge in</doc>
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="merge_structure" c:identifier="gst_caps_merge_structure">
+        <doc xml:whitespace="preserve">Appends @structure to @caps if its not already expressed by @caps.  The
+structure is not copied; @caps becomes the owner of @structure.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="structure" transfer-ownership="full">
+            <doc xml:whitespace="preserve">the #GstStructure to merge</doc>
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="normalize" c:identifier="gst_caps_normalize">
+        <doc xml:whitespace="preserve">Creates a new #GstCaps that represents the same set of formats as</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GstCaps</doc>
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="ref" c:identifier="gst_caps_ref">
+        <doc xml:whitespace="preserve">Add a reference to a #GstCaps object.
+From this point on, until the caller calls gst_caps_unref() or
+gst_caps_make_writable(), it is guaranteed that the caps object will not
+change. This means its structures won't change, etc. To use a #GstCaps
+object, you must always have a refcount on it -- either the one made
+implicitly by e.g. gst_caps_new_simple(), or via taking one explicitly with
+this function.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the same #GstCaps object.</doc>
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="remove_structure" c:identifier="gst_caps_remove_structure">
+        <doc xml:whitespace="preserve">removes the stucture with the given index from the list of structures
+contained in @caps.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="idx" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Index of the structure to remove</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="save_thyself"
+              c:identifier="gst_caps_save_thyself"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Serializes a #GstCaps to XML and adds it as a child node of @parent.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a XML node pointer</doc>
+          <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a XML parent node</doc>
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_simple"
+              c:identifier="gst_caps_set_simple"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets fields in a #GstCaps.  The arguments must be passed in the same
+manner as gst_structure_set(), and be NULL-terminated.
+&lt;note&gt;Prior to GStreamer version 0.10.26, this function failed when
+of GStreamer, you may only call this function when GST_CAPS_IS_SIMPLE()
+is %TRUE for @caps.&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="field" transfer-ownership="none">
+            <doc xml:whitespace="preserve">first field to set</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_simple_valist"
+              c:identifier="gst_caps_set_simple_valist"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets fields in a #GstCaps.  The arguments must be passed in the same
+manner as gst_structure_set(), and be NULL-terminated.
+&lt;note&gt;Prior to GStreamer version 0.10.26, this function failed when
+of GStreamer, you may only call this function when GST_CAPS_IS_SIMPLE()
+is %TRUE for @caps.&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="field" transfer-ownership="none">
+            <doc xml:whitespace="preserve">first field to set</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="varargs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">additional parameters</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_value"
+              c:identifier="gst_caps_set_value"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Sets the given @field on all structures of @caps to the given @value.
+This is a convenience function for calling gst_structure_set_value() on
+all structures of @caps.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="field" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the field to set</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">value to set the field to</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="steal_structure"
+              c:identifier="gst_caps_steal_structure"
+              version="0.10.30">
+        <doc xml:whitespace="preserve">Retrieves the stucture with the given index from the list of structures
+contained in @caps. The caller becomes the owner of the returned structure.
+to @index.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a pointer to the #GstStructure corresponding</doc>
+          <type name="Structure" c:type="GstStructure*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Index of the structure to retrieve</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="subtract" c:identifier="gst_caps_subtract">
+        <doc xml:whitespace="preserve">Subtracts the @subtrahend from the @minuend.
+&lt;note&gt;This function does not work reliably if optional properties for caps
+are included on one caps and omitted on the other.&lt;/note&gt;</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the resulting caps</doc>
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+        <parameters>
+          <parameter name="subtrahend" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#GstCaps to substract</doc>
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_string" c:identifier="gst_caps_to_string">
+        <doc xml:whitespace="preserve">Converts @caps to a string representation.  This string representation
+can be converted back to a #GstCaps by gst_caps_from_string().
+For debugging purposes its easier to do something like this:
+|[
+GST_LOG ("caps are %" GST_PTR_FORMAT, caps);
+]|
+This prints the caps in human readble form.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated string representing @caps.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="truncate" c:identifier="gst_caps_truncate">
+        <doc xml:whitespace="preserve">Destructively discard all but the first structure from @caps. Useful when
+fixating. @caps must be writable.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="union" c:identifier="gst_caps_union">
+        <doc xml:whitespace="preserve">Creates a new #GstCaps that contains all the formats that are in
+either @caps1 and @caps2.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GstCaps</doc>
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstCaps to union</doc>
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unref" c:identifier="gst_caps_unref">
+        <doc xml:whitespace="preserve">Unref a #GstCaps and and free all its structures and the
+structures' values when the refcount reaches 0.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <bitfield name="CapsFlags" c:type="GstCapsFlags">
+      <doc xml:whitespace="preserve">Extra flags for a caps.</doc>
+      <member name="caps_flags_any"
+              value="1"
+              c:identifier="GST_CAPS_FLAGS_ANY"/>
+    </bitfield>
+    <enumeration name="CapsIntersectMode"
+                 version="0.10.33"
+                 c:type="GstCapsIntersectMode">
+      <doc xml:whitespace="preserve">Modes of caps intersection
+by iterating on the caps' structures as the following matrix shows:
+|[
+caps1
++-------------
+| 1  2  4  7
+caps2 | 3  5  8 10
+| 6  9 11 12
+]|
+Used when there is no explicit precedence of one caps over the other. e.g.
+tee's sink pad getcaps function, it will probe its src pad peers' for their
+caps and intersect them with this mode.
+another element's caps priority order when intersecting with its own caps.
+would be [A, B], maintaining the first caps priority on the intersection.</doc>
+      <member name="zig_zag"
+              value="0"
+              c:identifier="GST_CAPS_INTERSECT_ZIG_ZAG"/>
+      <member name="first" value="1" c:identifier="GST_CAPS_INTERSECT_FIRST"/>
+    </enumeration>
+    <interface name="ChildProxy"
+               c:symbol-prefix="child_proxy"
+               c:type="GstChildProxy"
+               glib:type-name="GstChildProxy"
+               glib:get-type="gst_child_proxy_get_type"
+               glib:type-struct="ChildProxyInterface">
+      <doc xml:whitespace="preserve">This interface abstracts handling of property sets for elements with
+children. Imagine elements such as mixers or polyphonic generators. They all
+have multiple #GstPad or some kind of voice objects. Another use case are
+container elements like #GstBin.
+The element implementing the interface acts as a parent for those child
+objects.
+By implementing this interface the child properties can be accessed from the
+parent element by using gst_child_proxy_get() and gst_child_proxy_set().
+Property names are written as "child-name::property-name". The whole naming
+scheme is recursive. Thus "child1::child2::property" is valid too, if
+"child1" and "child2" implement the #GstChildProxy interface.</doc>
+      <prerequisite name="Object"/>
+      <virtual-method name="child_added">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="child_removed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_child_by_index" invoker="get_child_by_index">
+        <doc xml:whitespace="preserve">Fetches a child by its number.
+too high). Unref after usage.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the child object or %NULL if not found (index</doc>
+          <type name="Object" c:type="GstObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the childs position in the child list</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_children_count" invoker="get_children_count">
+        <doc xml:whitespace="preserve">Gets the number of child objects this parent contains.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of child objects</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </virtual-method>
+      <method name="get_child_by_index"
+              c:identifier="gst_child_proxy_get_child_by_index">
+        <doc xml:whitespace="preserve">Fetches a child by its number.
+too high). Unref after usage.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the child object or %NULL if not found (index</doc>
+          <type name="Object" c:type="GstObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the childs position in the child list</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_child_by_name"
+              c:identifier="gst_child_proxy_get_child_by_name">
+        <doc xml:whitespace="preserve">Looks up a child element by the given name.
+Implementors can use #GstObject together with gst_object_get_name()
+after usage.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the child object or %NULL if not found. Unref</doc>
+          <type name="Object" c:type="GstObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the childs name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_children_count"
+              c:identifier="gst_child_proxy_get_children_count">
+        <doc xml:whitespace="preserve">Gets the number of child objects this parent contains.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of child objects</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <glib:signal name="child-added">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="GObject.Object"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="child-removed">
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="GObject.Object"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </interface>
+    <record name="ChildProxyInterface"
+            c:type="GstChildProxyInterface"
+            glib:is-gtype-struct-for="ChildProxy">
+      <doc xml:whitespace="preserve">#GstChildProxy interface.</doc>
+      <field name="parent">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="get_child_by_index">
+        <callback name="get_child_by_index">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">the child object or %NULL if not found (index</doc>
+            <type name="Object" c:type="GstObject*"/>
+          </return-value>
+          <parameters>
+            <parameter name="parent" transfer-ownership="none">
+              <type name="ChildProxy" c:type="GstChildProxy*"/>
+            </parameter>
+            <parameter name="index" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the childs position in the child list</doc>
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_children_count">
+        <callback name="get_children_count">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of child objects</doc>
+            <type name="guint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="parent" transfer-ownership="none">
+              <type name="ChildProxy" c:type="GstChildProxy*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="child_added">
+        <callback name="child_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parent" transfer-ownership="none">
+              <type name="ChildProxy" c:type="GstChildProxy*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="child_removed">
+        <callback name="child_removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parent" transfer-ownership="none">
+              <type name="ChildProxy" c:type="GstChildProxy*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <class name="Clock"
+           c:symbol-prefix="clock"
+           c:type="GstClock"
+           parent="Object"
+           glib:type-name="GstClock"
+           glib:get-type="gst_clock_get_type"
+           glib:type-struct="ClockClass">
+      <doc xml:whitespace="preserve">GStreamer uses a global clock to synchronize the plugins in a pipeline.
+Different clock implementations are possible by implementing this abstract
+base class or, more conveniently, by subclassing #GstSystemClock.
+The #GstClock returns a monotonically increasing time with the method
+gst_clock_get_time(). Its accuracy and base time depend on the specific
+clock implementation but time is always expressed in nanoseconds. Since the
+baseline of the clock is undefined, the clock time returned is not
+meaningful in itself, what matters are the deltas between two clock times.
+The time returned by a clock is called the absolute time.
+The pipeline uses the clock to calculate the running time. Usually all
+renderers synchronize to the global clock using the buffer timestamps, the
+newsegment events and the element's base time, see #GstPipeline.
+A clock implementation can support periodic and single shot clock
+notifications both synchronous and asynchronous.
+One first needs to create a #GstClockID for the periodic or single shot
+notification using gst_clock_new_single_shot_id() or
+gst_clock_new_periodic_id().
+To perform a blocking wait for the specific time of the #GstClockID use the
+gst_clock_id_wait(). To receive a callback when the specific time is reached
+in the clock use gst_clock_id_wait_async(). Both these calls can be
+interrupted with the gst_clock_id_unschedule() call. If the blocking wait is
+unscheduled a return value of #GST_CLOCK_UNSCHEDULED is returned.
+Periodic callbacks scheduled async will be repeatedly called automatically
+until it is unscheduled. To schedule a sync periodic callback,
+gst_clock_id_wait() should be called repeatedly.
+The async callbacks can happen from any thread, either provided by the core
+or from a streaming thread. The application should be prepared for this.
+A #GstClockID that has been unscheduled cannot be used again for any wait
+operation, a new #GstClockID should be created and the old unscheduled one
+should be destroyed with gst_clock_id_unref().
+It is possible to perform a blocking wait on the same #GstClockID from
+multiple threads. However, registering the same #GstClockID for multiple
+async notifications is not possible, the callback will only be called for
+the thread registering the entry last.
+None of the wait operations unref the #GstClockID, the owner is responsible
+for unreffing the ids itself. This holds for both periodic and single shot
+notifications. The reason being that the owner of the #GstClockID has to
+keep a handle to the #GstClockID to unblock the wait on FLUSHING events or
+state changes and if the entry would be unreffed automatically, the handle 
+might become invalid without any notification.
+These clock operations do not operate on the running time, so the callbacks
+will also occur when not in PLAYING state as if the clock just keeps on
+running. Some clocks however do not progress when the element that provided
+the clock is not PLAYING.
+When a clock has the #GST_CLOCK_FLAG_CAN_SET_MASTER flag set, it can be
+slaved to another #GstClock with the gst_clock_set_master(). The clock will
+then automatically be synchronized to this master clock by repeatedly
+sampling the master clock and the slave clock and recalibrating the slave
+clock with gst_clock_set_calibration(). This feature is mostly useful for
+plugins that have an internal clock but must operate with another clock
+selected by the #GstPipeline.  They can track the offset and rate difference
+of their internal clock relative to the master clock by using the
+gst_clock_get_calibration() function. 
+The master/slave synchronisation can be tuned with the #GstClock:timeout,
+#GstClock:window-size and #GstClock:window-threshold properties.
+The #GstClock:timeout property defines the interval to sample the master
+clock and run the calibration functions. #GstClock:window-size defines the
+number of samples to use when calibrating and #GstClock:window-threshold
+defines the minimum number of samples before the calibration is performed.
+Last reviewed on 2009-05-21 (0.10.24)</doc>
+      <function name="id_compare_func"
+                c:identifier="gst_clock_id_compare_func">
+        <doc xml:whitespace="preserve">Compares the two #GstClockID instances. This function can be used
+as a GCompareFunc when sorting ids.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">negative value if a &lt; b; zero if a = b; positive value if a &gt; b</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="id1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GstClockID</doc>
+            <type name="gpointer" c:type="gconstpointer"/>
+          </parameter>
+          <parameter name="id2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A #GstClockID to compare with</doc>
+            <type name="gpointer" c:type="gconstpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="id_get_time" c:identifier="gst_clock_id_get_time">
+        <doc xml:whitespace="preserve">Get the time of the clock ID
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the time of the given clock id.</doc>
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GstClockID to query</doc>
+            <type name="ClockID" c:type="GstClockID"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="id_ref" c:identifier="gst_clock_id_ref">
+        <doc xml:whitespace="preserve">Increase the refcount of given @id.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The same #GstClockID with increased refcount.</doc>
+          <type name="ClockID" c:type="GstClockID"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GstClockID to ref</doc>
+            <type name="ClockID" c:type="GstClockID"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="id_unref" c:identifier="gst_clock_id_unref">
+        <doc xml:whitespace="preserve">Unref given @id. When the refcount reaches 0 the
+#GstClockID will be freed.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="full">
+            <doc xml:whitespace="preserve">The #GstClockID to unref</doc>
+            <type name="ClockID" c:type="GstClockID"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="id_unschedule" c:identifier="gst_clock_id_unschedule">
+        <doc xml:whitespace="preserve">Cancel an outstanding request with @id. This can either
+be an outstanding async notification or a pending sync notification.
+After this call, @id cannot be used anymore to receive sync or
+async notifications, you need to create a new #GstClockID.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The id to unschedule</doc>
+            <type name="ClockID" c:type="GstClockID"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="id_wait" c:identifier="gst_clock_id_wait">
+        <doc xml:whitespace="preserve">Perform a blocking wait on @id. 
+or gst_clock_new_periodic_id() and should not have been unscheduled
+with a call to gst_clock_id_unschedule(). 
+If the @jitter argument is not %NULL and this function returns #GST_CLOCK_OK
+or #GST_CLOCK_EARLY, it will contain the difference
+against the clock and the time of @id when this method was
+called. 
+Positive values indicate how late @id was relative to the clock
+(in which case this function will return #GST_CLOCK_EARLY). 
+Negative values indicate how much time was spent waiting on the clock 
+before this function returned.
+if the current clock time is past the time of @id, #GST_CLOCK_OK if 
+unscheduled with gst_clock_id_unschedule().
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the result of the blocking wait. #GST_CLOCK_EARLY will be returned</doc>
+          <type name="ClockReturn" c:type="GstClockReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GstClockID to wait on</doc>
+            <type name="ClockID" c:type="GstClockID"/>
+          </parameter>
+          <parameter name="jitter"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a pointer that will contain the jitter, can be %NULL.</doc>
+            <type name="ClockTimeDiff" c:type="GstClockTimeDiff*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="id_wait_async"
+                c:identifier="gst_clock_id_wait_async"
+                introspectable="0">
+        <doc xml:whitespace="preserve">Register a callback on the given #GstClockID @id with the given
+function and user_data. When passing a #GstClockID with an invalid
+time to this function, the callback will be called immediately
+with  a time set to GST_CLOCK_TIME_NONE. The callback will
+be called when the time of @id has been reached.
+The callback @func can be invoked from any thread, either provided by the
+core or from a streaming thread. The application should be prepared for this.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the result of the non blocking wait.</doc>
+          <type name="ClockReturn" c:type="GstClockReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstClockID to wait on</doc>
+            <type name="ClockID" c:type="GstClockID"/>
+          </parameter>
+          <parameter name="func" transfer-ownership="none" closure="2">
+            <doc xml:whitespace="preserve">The callback function</doc>
+            <type name="ClockCallback" c:type="GstClockCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">User data passed in the callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="id_wait_async_full"
+                c:identifier="gst_clock_id_wait_async_full"
+                version="0.10.30">
+        <doc xml:whitespace="preserve">Register a callback on the given #GstClockID @id with the given
+function and user_data. When passing a #GstClockID with an invalid
+time to this function, the callback will be called immediately
+with  a time set to GST_CLOCK_TIME_NONE. The callback will
+be called when the time of @id has been reached.
+The callback @func can be invoked from any thread, either provided by the
+core or from a streaming thread. The application should be prepared for this.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the result of the non blocking wait.</doc>
+          <type name="ClockReturn" c:type="GstClockReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstClockID to wait on</doc>
+            <type name="ClockID" c:type="GstClockID"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <doc xml:whitespace="preserve">The callback function</doc>
+            <type name="ClockCallback" c:type="GstClockCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">User data passed in the callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy_data"
+                     transfer-ownership="none"
+                     scope="async">
+            <doc xml:whitespace="preserve">#GDestroyNotify for user_data</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="change_resolution">
+        <return-value transfer-ownership="none">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+        <parameters>
+          <parameter name="old_resolution" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="new_resolution" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_internal_time" invoker="get_internal_time">
+        <doc xml:whitespace="preserve">Gets the current internal time of the given clock. The time is returned
+unadjusted for the offset and the rate.
+given invalid input.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the internal time of the clock. Or GST_CLOCK_TIME_NONE when</doc>
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_resolution" invoker="get_resolution">
+        <doc xml:whitespace="preserve">Get the accuracy of the clock. The accuracy of the clock is the granularity
+of the values returned by gst_clock_get_time().
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the resolution of the clock in units of #GstClockTime.</doc>
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="unschedule">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="entry" transfer-ownership="none">
+            <type name="ClockEntry" c:type="GstClockEntry*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="wait">
+        <return-value transfer-ownership="none">
+          <type name="ClockReturn" c:type="GstClockReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="entry" transfer-ownership="none">
+            <type name="ClockEntry" c:type="GstClockEntry*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="wait_async">
+        <return-value transfer-ownership="none">
+          <type name="ClockReturn" c:type="GstClockReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="entry" transfer-ownership="none">
+            <type name="ClockEntry" c:type="GstClockEntry*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="wait_jitter">
+        <return-value transfer-ownership="none">
+          <type name="ClockReturn" c:type="GstClockReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="entry" transfer-ownership="none">
+            <type name="ClockEntry" c:type="GstClockEntry*"/>
+          </parameter>
+          <parameter name="jitter" transfer-ownership="none">
+            <type name="ClockTimeDiff" c:type="GstClockTimeDiff*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="add_observation" c:identifier="gst_clock_add_observation">
+        <doc xml:whitespace="preserve">The time @master of the master clock and the time @slave of the slave
+clock are added to the list of observations. If enough observations
+are available, a linear regression algorithm is run on the
+observations and @clock is recalibrated.
+If this functions returns %TRUE, @r_squared will contain the 
+correlation coefficient of the interpolation. A value of 1.0
+means a perfect regression was performed. This value can
+be used to control the sampling frequency of the master and slave
+clocks.
+regression algorithm.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if enough observations were added to run the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="slave" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a time on the slave</doc>
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="master" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a time on the master</doc>
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="r_squared"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">a pointer to hold the result</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="adjust_unlocked" c:identifier="gst_clock_adjust_unlocked">
+        <doc xml:whitespace="preserve">Converts the given @internal clock time to the external time, adjusting for the
+rate and reference time set with gst_clock_set_calibration() and making sure
+that the returned time is increasing. This function should be called with the
+clock's OBJECT_LOCK held and is mainly used by clock subclasses.
+This function is the reverse of gst_clock_unadjust_unlocked().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the converted time of the clock.</doc>
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+        <parameters>
+          <parameter name="internal" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a clock time</doc>
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_calibration" c:identifier="gst_clock_get_calibration">
+        <doc xml:whitespace="preserve">Gets the internal rate and reference time of @clock. See
+gst_clock_set_calibration() for more information.
+caller is not interested in the values.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="internal"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a location to store the internal time</doc>
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+          <parameter name="external"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a location to store the external time</doc>
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+          <parameter name="rate_num"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a location to store the rate numerator</doc>
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+          <parameter name="rate_denom"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a location to store the rate denominator</doc>
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_internal_time"
+              c:identifier="gst_clock_get_internal_time">
+        <doc xml:whitespace="preserve">Gets the current internal time of the given clock. The time is returned
+unadjusted for the offset and the rate.
+given invalid input.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the internal time of the clock. Or GST_CLOCK_TIME_NONE when</doc>
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="get_master" c:identifier="gst_clock_get_master">
+        <doc xml:whitespace="preserve">Get the master clock that @clock is slaved to or %NULL when the clock is
+not slaved to any master clock.
+not slaved to a master clock. Unref after usage.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a master #GstClock or %NULL when this clock is</doc>
+          <type name="Clock" c:type="GstClock*"/>
+        </return-value>
+      </method>
+      <method name="get_resolution" c:identifier="gst_clock_get_resolution">
+        <doc xml:whitespace="preserve">Get the accuracy of the clock. The accuracy of the clock is the granularity
+of the values returned by gst_clock_get_time().
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the resolution of the clock in units of #GstClockTime.</doc>
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="get_time" c:identifier="gst_clock_get_time">
+        <doc xml:whitespace="preserve">Gets the current time of the given clock. The time is always
+monotonically increasing and adjusted according to the current
+offset and rate.
+given invalid input.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the time of the clock. Or GST_CLOCK_TIME_NONE when</doc>
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="new_periodic_id" c:identifier="gst_clock_new_periodic_id">
+        <doc xml:whitespace="preserve">Get an ID from @clock to trigger a periodic notification.
+The periodic notifications will start at time @start_time and
+will then be fired with the given @interval. @id should be unreffed
+after usage.
+time notification.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GstClockID that can be used to request the</doc>
+          <type name="ClockID" c:type="GstClockID"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_time" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the requested start time</doc>
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="interval" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the requested interval</doc>
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="new_single_shot_id"
+              c:identifier="gst_clock_new_single_shot_id">
+        <doc xml:whitespace="preserve">Get a #GstClockID from @clock to trigger a single shot
+notification at the requested time. The single shot id should be
+unreffed after usage.
+time notification.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GstClockID that can be used to request the</doc>
+          <type name="ClockID" c:type="GstClockID"/>
+        </return-value>
+        <parameters>
+          <parameter name="time" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the requested time</doc>
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="periodic_id_reinit"
+              c:identifier="gst_clock_periodic_id_reinit"
+              version="0.10.33">
+        <doc xml:whitespace="preserve">Reinitializes the provided periodic @id to the provided start time and
+interval. Does not modify the reference count.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the GstClockID could be reinitialized to the provided</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstClockID</doc>
+            <type name="ClockID" c:type="GstClockID"/>
+          </parameter>
+          <parameter name="start_time" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the requested start time</doc>
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="interval" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the requested interval</doc>
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_calibration" c:identifier="gst_clock_set_calibration">
+        <doc xml:whitespace="preserve">Adjusts the rate and time of @clock. A rate of 1/1 is the normal speed of
+the clock. Values bigger than 1/1 make the clock go faster.
+gst_clock_get_time() should have been @external at internal time @internal.
+This internal time should not be in the future; that is, it should be less
+than the value of gst_clock_get_internal_time() when this function is called.
+Subsequent calls to gst_clock_get_time() will return clock times computed as
+follows:
+&lt;programlisting&gt;
+time = (internal_time - internal) * rate_num / rate_denom + external
+&lt;/programlisting&gt;
+This formula is implemented in gst_clock_adjust_unlocked(). Of course, it
+tries to do the integer arithmetic as precisely as possible.
+Note that gst_clock_get_time() always returns increasing values so when you
+move the clock backwards, gst_clock_get_time() will report the previous value
+until the clock catches up.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="internal" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a reference internal time</doc>
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="external" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a reference external time</doc>
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="rate_num" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the numerator of the rate of the clock relative to its internal time</doc>
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="rate_denom" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the denominator of the rate of the clock</doc>
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_master" c:identifier="gst_clock_set_master">
+        <doc xml:whitespace="preserve">Set @master as the master clock for @clock. @clock will be automatically
+calibrated so that gst_clock_get_time() reports the same time as the
+master clock.  
+A clock provider that slaves its clock to a master can get the current
+calibration values with gst_clock_get_calibration().
+however keep reporting its time adjusted with the last configured rate 
+and time offsets.
+Trying to set a master on a clock without the 
+#GST_CLOCK_FLAG_CAN_SET_MASTER flag will make this function return %FALSE.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the clock is capable of being slaved to a master clock.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="master" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">a master #GstClock</doc>
+            <type name="Clock" c:type="GstClock*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_resolution" c:identifier="gst_clock_set_resolution">
+        <doc xml:whitespace="preserve">Set the accuracy of the clock. Some clocks have the possibility to operate
+with different accuracy at the expense of more resource usage. There is
+normally no need to change the default resolution of a clock. The resolution
+of a clock can only be changed if the clock has the
+#GST_CLOCK_FLAG_CAN_SET_RESOLUTION flag set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new resolution of the clock.</doc>
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+        <parameters>
+          <parameter name="resolution" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The resolution to set</doc>
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="single_shot_id_reinit"
+              c:identifier="gst_clock_single_shot_id_reinit"
+              version="0.10.32">
+        <doc xml:whitespace="preserve">Reinitializes the provided single shot @id to the provided time. Does not
+modify the reference count.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the GstClockID could be reinitialized to the provided</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstClockID</doc>
+            <type name="ClockID" c:type="GstClockID"/>
+          </parameter>
+          <parameter name="time" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The requested time.</doc>
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unadjust_unlocked"
+              c:identifier="gst_clock_unadjust_unlocked"
+              version="0.10.13">
+        <doc xml:whitespace="preserve">Converts the given @external clock time to the internal time of @clock,
+using the rate and reference time set with gst_clock_set_calibration().
+This function should be called with the clock's OBJECT_LOCK held and
+is mainly used by clock subclasses.
+This function is the reverse of gst_clock_adjust_unlocked().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the internal time of the clock corresponding to @external.</doc>
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+        <parameters>
+          <parameter name="external" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an external clock time</doc>
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="stats" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="timeout" writable="1" transfer-ownership="none">
+        <type name="guint64"/>
+      </property>
+      <property name="window-size" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="window-threshold" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="slave_lock">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="internal_calibration">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="external_calibration">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="rate_numerator">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="rate_denominator">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="last_time">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="entries">
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="entries_changed">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="resolution" readable="0" private="1">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="stats" readable="0" private="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="master" readable="0" private="1">
+        <type name="Clock" c:type="GstClock*"/>
+      </field>
+      <field name="filling" readable="0" private="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="window_size" readable="0" private="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="window_threshold" readable="0" private="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="time_index" readable="0" private="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="timeout" readable="0" private="1">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="times" readable="0" private="1">
+        <type name="ClockTime" c:type="GstClockTime*"/>
+      </field>
+      <field name="clockid" readable="0" private="1">
+        <type name="ClockID" c:type="GstClockID"/>
+      </field>
+      <union name="ABI" c:type="ABI">
+        <field name="priv" writable="1">
+          <type name="ClockPrivate" c:type="GstClockPrivate*"/>
+        </field>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="GstClockTime" fixed-size="4">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </array>
+        </field>
+      </union>
+    </class>
+    <callback name="ClockCallback" c:type="GstClockCallback">
+      <doc xml:whitespace="preserve">The function prototype of the callback.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE or %FALSE (currently unused)</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="clock" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The clock that triggered the callback</doc>
+          <type name="Clock" c:type="GstClock*"/>
+        </parameter>
+        <parameter name="time" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The time it was triggered</doc>
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </parameter>
+        <parameter name="id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GstClockID that expired</doc>
+          <type name="ClockID" c:type="GstClockID"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <doc xml:whitespace="preserve">user data passed in the gst_clock_id_wait_async() function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="ClockClass"
+            c:type="GstClockClass"
+            glib:is-gtype-struct-for="Clock">
+      <doc xml:whitespace="preserve">GStreamer clock class. Override the vmethods to implement the clock
+functionality.</doc>
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="change_resolution">
+        <callback name="change_resolution">
+          <return-value transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </return-value>
+          <parameters>
+            <parameter name="clock" transfer-ownership="none">
+              <type name="Clock" c:type="GstClock*"/>
+            </parameter>
+            <parameter name="old_resolution" transfer-ownership="none">
+              <type name="ClockTime" c:type="GstClockTime"/>
+            </parameter>
+            <parameter name="new_resolution" transfer-ownership="none">
+              <type name="ClockTime" c:type="GstClockTime"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_resolution">
+        <callback name="get_resolution">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the resolution of the clock in units of #GstClockTime.</doc>
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </return-value>
+          <parameters>
+            <parameter name="clock" transfer-ownership="none">
+              <type name="Clock" c:type="GstClock*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_internal_time">
+        <callback name="get_internal_time">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the internal time of the clock. Or GST_CLOCK_TIME_NONE when</doc>
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </return-value>
+          <parameters>
+            <parameter name="clock" transfer-ownership="none">
+              <type name="Clock" c:type="GstClock*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="wait">
+        <callback name="wait">
+          <return-value transfer-ownership="none">
+            <type name="ClockReturn" c:type="GstClockReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="clock" transfer-ownership="none">
+              <type name="Clock" c:type="GstClock*"/>
+            </parameter>
+            <parameter name="entry" transfer-ownership="none">
+              <type name="ClockEntry" c:type="GstClockEntry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="wait_async">
+        <callback name="wait_async">
+          <return-value transfer-ownership="none">
+            <type name="ClockReturn" c:type="GstClockReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="clock" transfer-ownership="none">
+              <type name="Clock" c:type="GstClock*"/>
+            </parameter>
+            <parameter name="entry" transfer-ownership="none">
+              <type name="ClockEntry" c:type="GstClockEntry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unschedule">
+        <callback name="unschedule">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="clock" transfer-ownership="none">
+              <type name="Clock" c:type="GstClock*"/>
+            </parameter>
+            <parameter name="entry" transfer-ownership="none">
+              <type name="ClockEntry" c:type="GstClockEntry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="wait_jitter">
+        <callback name="wait_jitter">
+          <return-value transfer-ownership="none">
+            <type name="ClockReturn" c:type="GstClockReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="clock" transfer-ownership="none">
+              <type name="Clock" c:type="GstClock*"/>
+            </parameter>
+            <parameter name="entry" transfer-ownership="none">
+              <type name="ClockEntry" c:type="GstClockEntry*"/>
+            </parameter>
+            <parameter name="jitter" transfer-ownership="none">
+              <type name="ClockTimeDiff" c:type="GstClockTimeDiff*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <record name="ClockEntry" c:type="GstClockEntry">
+      <doc xml:whitespace="preserve">All pending timeouts or periodic notifies are converted into
+an entry.
+Note that GstClockEntry should be treated as an opaque structure. It must
+not be extended or allocated using a custom allocator.</doc>
+      <field name="refcount" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="clock" writable="1">
+        <type name="Clock" c:type="GstClock*"/>
+      </field>
+      <field name="type" writable="1">
+        <type name="ClockEntryType" c:type="GstClockEntryType"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="interval" writable="1">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="status" writable="1">
+        <type name="ClockReturn" c:type="GstClockReturn"/>
+      </field>
+      <field name="func" writable="1">
+        <type name="ClockCallback" c:type="GstClockCallback"/>
+      </field>
+      <field name="user_data" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="destroy_data" writable="1">
+        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+      </field>
+      <field name="unscheduled" writable="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="woken_up" writable="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+    </record>
+    <enumeration name="ClockEntryType" c:type="GstClockEntryType">
+      <doc xml:whitespace="preserve">The type of the clock entry</doc>
+      <member name="single" value="0" c:identifier="GST_CLOCK_ENTRY_SINGLE"/>
+      <member name="periodic"
+              value="1"
+              c:identifier="GST_CLOCK_ENTRY_PERIODIC"/>
+    </enumeration>
+    <bitfield name="ClockFlags" c:type="GstClockFlags">
+      <doc xml:whitespace="preserve">The capabilities of this clock</doc>
+      <member name="can_do_single_sync"
+              value="16"
+              c:identifier="GST_CLOCK_FLAG_CAN_DO_SINGLE_SYNC"/>
+      <member name="can_do_single_async"
+              value="32"
+              c:identifier="GST_CLOCK_FLAG_CAN_DO_SINGLE_ASYNC"/>
+      <member name="can_do_periodic_sync"
+              value="64"
+              c:identifier="GST_CLOCK_FLAG_CAN_DO_PERIODIC_SYNC"/>
+      <member name="can_do_periodic_async"
+              value="128"
+              c:identifier="GST_CLOCK_FLAG_CAN_DO_PERIODIC_ASYNC"/>
+      <member name="can_set_resolution"
+              value="256"
+              c:identifier="GST_CLOCK_FLAG_CAN_SET_RESOLUTION"/>
+      <member name="can_set_master"
+              value="512"
+              c:identifier="GST_CLOCK_FLAG_CAN_SET_MASTER"/>
+      <member name="last" value="4096" c:identifier="GST_CLOCK_FLAG_LAST"/>
+    </bitfield>
+    <record name="ClockPrivate" c:type="GstClockPrivate" disguised="1">
+    </record>
+    <enumeration name="ClockReturn" c:type="GstClockReturn">
+      <doc xml:whitespace="preserve">The return value of a clock operation.</doc>
+      <member name="ok" value="0" c:identifier="GST_CLOCK_OK"/>
+      <member name="early" value="1" c:identifier="GST_CLOCK_EARLY"/>
+      <member name="unscheduled"
+              value="2"
+              c:identifier="GST_CLOCK_UNSCHEDULED"/>
+      <member name="busy" value="3" c:identifier="GST_CLOCK_BUSY"/>
+      <member name="badtime" value="4" c:identifier="GST_CLOCK_BADTIME"/>
+      <member name="error" value="5" c:identifier="GST_CLOCK_ERROR"/>
+      <member name="unsupported"
+              value="6"
+              c:identifier="GST_CLOCK_UNSUPPORTED"/>
+      <member name="done" value="7" c:identifier="GST_CLOCK_DONE"/>
+    </enumeration>
+    <enumeration name="ClockType" c:type="GstClockType">
+      <doc xml:whitespace="preserve">The different kind of clocks.</doc>
+      <member name="realtime"
+              value="0"
+              c:identifier="GST_CLOCK_TYPE_REALTIME"/>
+      <member name="monotonic"
+              value="1"
+              c:identifier="GST_CLOCK_TYPE_MONOTONIC"/>
+    </enumeration>
+    <callback name="CopyFunction"
+              c:type="GstCopyFunction"
+              version="0.10.25"
+              introspectable="0">
+      <doc xml:whitespace="preserve">A function to create a copy of some object or
+increase its reference count.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a copy of the object or the same object with increased reference count</doc>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The object to copy</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="CoreError"
+                 c:type="GstCoreError"
+                 glib:error-quark="gst_core_error_quark">
+      <doc xml:whitespace="preserve">Core errors are errors inside the core GStreamer library.</doc>
+      <member name="failed" value="1" c:identifier="GST_CORE_ERROR_FAILED"/>
+      <member name="too_lazy"
+              value="2"
+              c:identifier="GST_CORE_ERROR_TOO_LAZY"/>
+      <member name="not_implemented"
+              value="3"
+              c:identifier="GST_CORE_ERROR_NOT_IMPLEMENTED"/>
+      <member name="state_change"
+              value="4"
+              c:identifier="GST_CORE_ERROR_STATE_CHANGE"/>
+      <member name="pad" value="5" c:identifier="GST_CORE_ERROR_PAD"/>
+      <member name="thread" value="6" c:identifier="GST_CORE_ERROR_THREAD"/>
+      <member name="negotiation"
+              value="7"
+              c:identifier="GST_CORE_ERROR_NEGOTIATION"/>
+      <member name="event" value="8" c:identifier="GST_CORE_ERROR_EVENT"/>
+      <member name="seek" value="9" c:identifier="GST_CORE_ERROR_SEEK"/>
+      <member name="caps" value="10" c:identifier="GST_CORE_ERROR_CAPS"/>
+      <member name="tag" value="11" c:identifier="GST_CORE_ERROR_TAG"/>
+      <member name="missing_plugin"
+              value="12"
+              c:identifier="GST_CORE_ERROR_MISSING_PLUGIN"/>
+      <member name="clock" value="13" c:identifier="GST_CORE_ERROR_CLOCK"/>
+      <member name="disabled"
+              value="14"
+              c:identifier="GST_CORE_ERROR_DISABLED"/>
+      <member name="num_errors"
+              value="15"
+              c:identifier="GST_CORE_ERROR_NUM_ERRORS"/>
+    </enumeration>
+    <constant name="DEBUG_BG_MASK" value="240">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="DEBUG_FG_MASK" value="15">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="DEBUG_FORMAT_MASK" value="65280">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <glib:boxed glib:name="Date"
+                c:symbol-prefix="date"
+                glib:type-name="GstDate"
+                glib:get-type="gst_date_get_type">
+    </glib:boxed>
+    <record name="DateTime"
+            c:type="GstDateTime"
+            glib:type-name="GstDateTime"
+            glib:get-type="gst_date_time_get_type"
+            c:symbol-prefix="date_time">
+      <doc xml:whitespace="preserve">Struct to store date, time and timezone information altogether.
+#GstDateTime is refcounted and immutable.
+Date information is handled using the proleptic Gregorian calendar.
+Provides basic creation functions and accessor functions to its fields.</doc>
+      <constructor name="new"
+                   c:identifier="gst_date_time_new"
+                   version="0.10.31">
+        <doc xml:whitespace="preserve">Creates a new #GstDateTime using the date and times in the gregorian calendar
+in the supplied timezone.
+1 to 31, @hour from 0 to 23, @minutes and @seconds from 0 to 59.
+Note that @tzoffset is a float and was chosen so for being able to handle
+some fractional timezones, while it still keeps the readability of
+represeting it in hours for most timezones.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #GstDateTime</doc>
+          <type name="DateTime" c:type="GstDateTime*"/>
+        </return-value>
+        <parameters>
+          <parameter name="tzoffset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Offset from UTC in hours.</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+          <parameter name="year" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the gregorian year</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="month" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the gregorian month</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="day" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the day of the gregorian month</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="hour" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the hour of the day</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="minute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the minute of the hour</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="seconds" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the second of the minute</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_unix_epoch_local_time"
+                   c:identifier="gst_date_time_new_from_unix_epoch_local_time"
+                   version="0.10.31">
+        <doc xml:whitespace="preserve">Creates a new #GstDateTime using the time since Jan 1, 1970 specified by</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #GstDateTime</doc>
+          <type name="DateTime" c:type="GstDateTime*"/>
+        </return-value>
+        <parameters>
+          <parameter name="secs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">seconds from the Unix epoch</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_unix_epoch_utc"
+                   c:identifier="gst_date_time_new_from_unix_epoch_utc"
+                   version="0.10.31">
+        <doc xml:whitespace="preserve">Creates a new #GstDateTime using the time since Jan 1, 1970 specified by</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #GstDateTime</doc>
+          <type name="DateTime" c:type="GstDateTime*"/>
+        </return-value>
+        <parameters>
+          <parameter name="secs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">seconds from the Unix epoch</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_local_time"
+                   c:identifier="gst_date_time_new_local_time"
+                   version="0.10.31">
+        <doc xml:whitespace="preserve">Creates a new #GstDateTime using the date and times in the gregorian calendar
+in the local timezone.
+1 to 31, @hour from 0 to 23, @minutes and @seconds from 0 to 59.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #GstDateTime</doc>
+          <type name="DateTime" c:type="GstDateTime*"/>
+        </return-value>
+        <parameters>
+          <parameter name="year" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the gregorian year</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="month" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the gregorian month</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="day" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the day of the gregorian month</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="hour" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the hour of the day</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="minute" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the minute of the hour</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="seconds" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the second of the minute</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_now_local_time"
+                   c:identifier="gst_date_time_new_now_local_time"
+                   version="0.10.31">
+        <doc xml:whitespace="preserve">Creates a new #GstDateTime representing the current date and time.
+be freed with gst_date_time_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #GstDateTime which should</doc>
+          <type name="DateTime" c:type="GstDateTime*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_now_utc"
+                   c:identifier="gst_date_time_new_now_utc"
+                   version="0.10.31">
+        <doc xml:whitespace="preserve">Creates a new #GstDateTime that represents the current instant at Universal
+coordinated time.
+be freed with gst_date_time_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the newly created #GstDateTime which should</doc>
+          <type name="DateTime" c:type="GstDateTime*"/>
+        </return-value>
+      </constructor>
+      <method name="get_day"
+              c:identifier="gst_date_time_get_day"
+              version="0.10.31">
+        <doc xml:whitespace="preserve">Returns the day of this #GstDateTime.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The day of this #GstDateTime</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_hour"
+              c:identifier="gst_date_time_get_hour"
+              version="0.10.31">
+        <doc xml:whitespace="preserve">Retrieves the hour of the day represented by @datetime in the gregorian
+calendar. The return is in the range of 0 to 23.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the hour of the day</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_microsecond"
+              c:identifier="gst_date_time_get_microsecond"
+              version="0.10.31">
+        <doc xml:whitespace="preserve">Retrieves the fractional part of the seconds in microseconds represented by</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the microsecond of the second</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_minute"
+              c:identifier="gst_date_time_get_minute"
+              version="0.10.31">
+        <doc xml:whitespace="preserve">Retrieves the minute of the hour represented by @datetime in the gregorian
+calendar.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the minute of the hour</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_month"
+              c:identifier="gst_date_time_get_month"
+              version="0.10.31">
+        <doc xml:whitespace="preserve">Returns the month of this #GstDateTime. January is 1, February is 2, etc..</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The month of this #GstDateTime</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_second"
+              c:identifier="gst_date_time_get_second"
+              version="0.10.31">
+        <doc xml:whitespace="preserve">Retrieves the second of the minute represented by @datetime in the gregorian
+calendar.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the second represented by @datetime</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_time_zone_offset"
+              c:identifier="gst_date_time_get_time_zone_offset"
+              version="0.10.31">
+        <doc xml:whitespace="preserve">Retrieves the offset from UTC in hours that the timezone specified
+by @datetime represents. Timezones ahead (to the east) of UTC have positive
+values, timezones before (to the west) of UTC have negative values.
+If @datetime represents UTC time, then the offset is zero.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the offset from UTC in hours</doc>
+          <type name="gfloat" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_year"
+              c:identifier="gst_date_time_get_year"
+              version="0.10.31">
+        <doc xml:whitespace="preserve">Returns the year of this #GstDateTime</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The year of this #GstDateTime</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="ref" c:identifier="gst_date_time_ref" version="0.10.31">
+        <doc xml:whitespace="preserve">Atomically increments the reference count of @datetime by one.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the reference @datetime</doc>
+          <type name="DateTime" c:type="GstDateTime*"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="gst_date_time_unref"
+              version="0.10.31">
+        <doc xml:whitespace="preserve">Atomically decrements the reference count of @datetime by one.  When the
+reference count reaches zero, the structure is freed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="DebugCategory" c:type="GstDebugCategory">
+      <doc xml:whitespace="preserve">This is the struct that describes the categories. Once initialized with
+#GST_DEBUG_CATEGORY_INIT, its values can't be changed anymore.</doc>
+      <field name="threshold" readable="0" private="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="color" readable="0" private="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="name" readable="0" private="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="description" readable="0" private="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <method name="free" c:identifier="gst_debug_category_free">
+        <doc xml:whitespace="preserve">Removes and frees the category and all associated resources.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_color" c:identifier="gst_debug_category_get_color">
+        <doc xml:whitespace="preserve">Returns the color of a debug category used when printing output in this
+category.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the color of the category.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_description"
+              c:identifier="gst_debug_category_get_description">
+        <doc xml:whitespace="preserve">Returns the description of a debug category.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the description of the category.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_name" c:identifier="gst_debug_category_get_name">
+        <doc xml:whitespace="preserve">Returns the name of a debug category.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the category.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_threshold"
+              c:identifier="gst_debug_category_get_threshold">
+        <doc xml:whitespace="preserve">Returns the threshold of a #GstDebugCategory.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstDebugLevel that is used as threshold.</doc>
+          <type name="DebugLevel" c:type="GstDebugLevel"/>
+        </return-value>
+      </method>
+      <method name="reset_threshold"
+              c:identifier="gst_debug_category_reset_threshold">
+        <doc xml:whitespace="preserve">Resets the threshold of the category to the default level. Debug information
+will only be output if the threshold is lower or equal to the level of the
+debugging message.
+Use this function to set the threshold back to where it was after using
+gst_debug_category_set_threshold().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_threshold"
+              c:identifier="gst_debug_category_set_threshold">
+        <doc xml:whitespace="preserve">Sets the threshold of the category to the given level. Debug information will
+only be output if the threshold is lower or equal to the level of the
+debugging message.
+&lt;note&gt;&lt;para&gt;
+Do not use this function in production code, because other functions may
+change the threshold of categories as side effect. It is however a nice
+function to use when debugging (even from gdb).
+&lt;/para&gt;&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="level" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstDebugLevel threshold to set.</doc>
+            <type name="DebugLevel" c:type="GstDebugLevel"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <enumeration name="DebugColorFlags" c:type="GstDebugColorFlags">
+      <doc xml:whitespace="preserve">These are some terminal style flags you can use when creating your
+debugging categories to make them stand out in debugging output.</doc>
+      <member name="fg_black" value="0" c:identifier="GST_DEBUG_FG_BLACK"/>
+      <member name="fg_red" value="1" c:identifier="GST_DEBUG_FG_RED"/>
+      <member name="fg_green" value="2" c:identifier="GST_DEBUG_FG_GREEN"/>
+      <member name="fg_yellow" value="3" c:identifier="GST_DEBUG_FG_YELLOW"/>
+      <member name="fg_blue" value="4" c:identifier="GST_DEBUG_FG_BLUE"/>
+      <member name="fg_magenta" value="5" c:identifier="GST_DEBUG_FG_MAGENTA"/>
+      <member name="fg_cyan" value="6" c:identifier="GST_DEBUG_FG_CYAN"/>
+      <member name="fg_white" value="7" c:identifier="GST_DEBUG_FG_WHITE"/>
+      <member name="bg_black" value="0" c:identifier="GST_DEBUG_BG_BLACK"/>
+      <member name="bg_red" value="16" c:identifier="GST_DEBUG_BG_RED"/>
+      <member name="bg_green" value="32" c:identifier="GST_DEBUG_BG_GREEN"/>
+      <member name="bg_yellow" value="48" c:identifier="GST_DEBUG_BG_YELLOW"/>
+      <member name="bg_blue" value="64" c:identifier="GST_DEBUG_BG_BLUE"/>
+      <member name="bg_magenta"
+              value="80"
+              c:identifier="GST_DEBUG_BG_MAGENTA"/>
+      <member name="bg_cyan" value="96" c:identifier="GST_DEBUG_BG_CYAN"/>
+      <member name="bg_white" value="112" c:identifier="GST_DEBUG_BG_WHITE"/>
+      <member name="bold" value="256" c:identifier="GST_DEBUG_BOLD"/>
+      <member name="underline" value="512" c:identifier="GST_DEBUG_UNDERLINE"/>
+    </enumeration>
+    <callback name="DebugFuncPtr" c:type="GstDebugFuncPtr">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </callback>
+    <bitfield name="DebugGraphDetails"
+              version="0.10.15"
+              c:type="GstDebugGraphDetails">
+      <doc xml:whitespace="preserve">Available details for pipeline graphs produced by GST_DEBUG_BIN_TO_DOT_FILE()
+and GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS().</doc>
+      <member name="media_type"
+              value="1"
+              c:identifier="GST_DEBUG_GRAPH_SHOW_MEDIA_TYPE"/>
+      <member name="caps_details"
+              value="2"
+              c:identifier="GST_DEBUG_GRAPH_SHOW_CAPS_DETAILS"/>
+      <member name="non_default_params"
+              value="4"
+              c:identifier="GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS"/>
+      <member name="states"
+              value="8"
+              c:identifier="GST_DEBUG_GRAPH_SHOW_STATES"/>
+      <member name="all" value="15" c:identifier="GST_DEBUG_GRAPH_SHOW_ALL"/>
+    </bitfield>
+    <enumeration name="DebugLevel" c:type="GstDebugLevel">
+      <doc xml:whitespace="preserve">The level defines the importance of a debugging message. The more important a
+message is, the greater the probability that the debugging system outputs it.</doc>
+      <member name="none" value="0" c:identifier="GST_LEVEL_NONE"/>
+      <member name="error" value="1" c:identifier="GST_LEVEL_ERROR"/>
+      <member name="warning" value="2" c:identifier="GST_LEVEL_WARNING"/>
+      <member name="info" value="3" c:identifier="GST_LEVEL_INFO"/>
+      <member name="debug" value="4" c:identifier="GST_LEVEL_DEBUG"/>
+      <member name="log" value="5" c:identifier="GST_LEVEL_LOG"/>
+      <member name="fixme" value="6" c:identifier="GST_LEVEL_FIXME"/>
+      <member name="trace" value="7" c:identifier="GST_LEVEL_TRACE"/>
+      <member name="memdump" value="9" c:identifier="GST_LEVEL_MEMDUMP"/>
+      <member name="count" value="10" c:identifier="GST_LEVEL_COUNT"/>
+    </enumeration>
+    <record name="DebugMessage" c:type="GstDebugMessage" disguised="1">
+      <method name="get" c:identifier="gst_debug_message_get">
+        <doc xml:whitespace="preserve">Gets the string representation of a #GstDebugMessage. This function is used
+in debug handlers to extract the message.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the string representation of a #GstDebugMessage.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+    </record>
+    <constant name="ELEMENT_FACTORY_KLASS_DECODER" value="Decoder">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="ELEMENT_FACTORY_KLASS_DEMUXER" value="Demuxer">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="ELEMENT_FACTORY_KLASS_DEPAYLOADER" value="Depayloader">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="ELEMENT_FACTORY_KLASS_ENCODER" value="Encoder">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="ELEMENT_FACTORY_KLASS_FORMATTER" value="Formatter">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="ELEMENT_FACTORY_KLASS_MEDIA_AUDIO" value="Audio">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="ELEMENT_FACTORY_KLASS_MEDIA_IMAGE" value="Image">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="ELEMENT_FACTORY_KLASS_MEDIA_METADATA" value="Metadata">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="ELEMENT_FACTORY_KLASS_MEDIA_SUBTITLE" value="Subtitle">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="ELEMENT_FACTORY_KLASS_MEDIA_VIDEO" value="Video">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="ELEMENT_FACTORY_KLASS_MUXER" value="Muxer">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="ELEMENT_FACTORY_KLASS_PARSER" value="Parser">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="ELEMENT_FACTORY_KLASS_PAYLOADER" value="Payloader">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="ELEMENT_FACTORY_KLASS_SINK" value="Sink">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="ELEMENT_FACTORY_KLASS_SRC" value="Source">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="ELEMENT_FACTORY_TYPE_ANY" value="-1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ELEMENT_FACTORY_TYPE_AUDIOVIDEO_SINKS" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ELEMENT_FACTORY_TYPE_AUDIO_ENCODER" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ELEMENT_FACTORY_TYPE_DECODABLE" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ELEMENT_FACTORY_TYPE_DECODER" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ELEMENT_FACTORY_TYPE_DEMUXER" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ELEMENT_FACTORY_TYPE_DEPAYLOADER" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ELEMENT_FACTORY_TYPE_ENCODER" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ELEMENT_FACTORY_TYPE_FORMATTER" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ELEMENT_FACTORY_TYPE_MAX_ELEMENTS" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ELEMENT_FACTORY_TYPE_MEDIA_ANY" value="-281474976710656">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ELEMENT_FACTORY_TYPE_MEDIA_AUDIO" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ELEMENT_FACTORY_TYPE_MEDIA_IMAGE" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ELEMENT_FACTORY_TYPE_MEDIA_METADATA" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ELEMENT_FACTORY_TYPE_MEDIA_SUBTITLE" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ELEMENT_FACTORY_TYPE_MEDIA_VIDEO" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ELEMENT_FACTORY_TYPE_MUXER" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ELEMENT_FACTORY_TYPE_PARSER" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ELEMENT_FACTORY_TYPE_PAYLOADER" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ELEMENT_FACTORY_TYPE_SINK" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ELEMENT_FACTORY_TYPE_SRC" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ELEMENT_FACTORY_TYPE_VIDEO_ENCODER" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="ERROR_SYSTEM" value="system error: %s">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="EVENT_TRACE_NAME" value="GstEvent">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="EVENT_TYPE_BOTH" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="EVENT_TYPE_SHIFT" value="4">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Element"
+           c:symbol-prefix="element"
+           c:type="GstElement"
+           parent="Object"
+           abstract="1"
+           glib:type-name="GstElement"
+           glib:get-type="gst_element_get_type"
+           glib:type-struct="ElementClass">
+      <doc xml:whitespace="preserve">GstElement is the abstract base class needed to construct an element that
+can be used in a GStreamer pipeline. Please refer to the plugin writers
+guide for more information on creating #GstElement subclasses.
+The name of a #GstElement can be get with gst_element_get_name() and set with
+gst_element_set_name().  For speed, GST_ELEMENT_NAME() can be used in the
+core when using the appropriate locking. Do not use this in plug-ins or
+applications in order to retain ABI compatibility.
+All elements have pads (of the type #GstPad).  These pads link to pads on
+other elements.  #GstBuffer flow between these linked pads.
+A #GstElement has a #GList of #GstPad structures for all their input (or sink)
+and output (or source) pads.
+Core and plug-in writers can add and remove pads with gst_element_add_pad()
+and gst_element_remove_pad().
+A pad of an element can be retrieved by name with gst_element_get_pad().
+An iterator of all pads can be retrieved with gst_element_iterate_pads().
+Elements can be linked through their pads.
+If the link is straightforward, use the gst_element_link()
+convenience function to link two elements, or gst_element_link_many()
+for more elements in a row.
+Use gst_element_link_filtered() to link two elements constrained by
+a specified set of #GstCaps.
+For finer control, use gst_element_link_pads() and
+gst_element_link_pads_filtered() to specify the pads to link on
+each element by name.
+Each element has a state (see #GstState).  You can get and set the state
+of an element with gst_element_get_state() and gst_element_set_state().
+Setting a state triggers a #GstStateChange. To get a string representation
+of a #GstState, use gst_element_state_get_name().
+You can get and set a #GstClock on an element using gst_element_get_clock()
+and gst_element_set_clock().
+Some elements can provide a clock for the pipeline if
+gst_element_provides_clock() returns %TRUE. With the
+gst_element_provide_clock() method one can retrieve the clock provided by
+such an element.
+Not all elements require a clock to operate correctly. If
+gst_element_requires_clock() returns %TRUE, a clock should be set on the
+element with gst_element_set_clock().
+Note that clock slection and distribution is normally handled by the
+toplevel #GstPipeline so the clock functions are only to be used in very
+specific situations.
+Last reviewed on 2009-05-29 (0.10.24)</doc>
+      <function name="make_from_uri" c:identifier="gst_element_make_from_uri">
+        <doc xml:whitespace="preserve">Creates an element for handling the given URI.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new element or NULL if none could be created</doc>
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Whether to create a source or a sink</doc>
+            <type name="URIType" c:type="GstURIType"/>
+          </parameter>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">URI to create an element for</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="elementname"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">Name of created element, can be NULL.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="register" c:identifier="gst_element_register">
+        <doc xml:whitespace="preserve">Create a new elementfactory capable of instantiating objects of the</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if the registering succeeded, FALSE on error</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="plugin" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">#GstPlugin to register the element with, or NULL for a static element (note that passing NULL only works in GStreamer 0.10.13 and later)</doc>
+            <type name="Plugin" c:type="GstPlugin*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of elements of this type</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="rank" transfer-ownership="none">
+            <doc xml:whitespace="preserve">rank of element (higher rank means more importance when autoplugging)</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">GType of element to register</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="state_change_return_get_name"
+                c:identifier="gst_element_state_change_return_get_name"
+                version="0.10.11">
+        <doc xml:whitespace="preserve">Gets a string representing the given state change result.
+result.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string with the name of the state</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="state_ret" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstStateChangeReturn to get the name of.</doc>
+            <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="state_get_name"
+                c:identifier="gst_element_state_get_name">
+        <doc xml:whitespace="preserve">Gets a string representing the given state.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string with the name of the state.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstState to get the name of.</doc>
+            <type name="State" c:type="GstState"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="change_state" invoker="change_state">
+        <doc xml:whitespace="preserve">Perform @transition on @element.
+This function must be called with STATE_LOCK held and is mainly used
+internally.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstStateChangeReturn of the state transition.</doc>
+          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="transition" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the requested transition</doc>
+            <type name="StateChange" c:type="GstStateChange"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_index" invoker="get_index">
+        <doc xml:whitespace="preserve">Gets the index from the element.
+element. unref after usage.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GstIndex or %NULL when no index was set on the</doc>
+          <type name="Index" c:type="GstIndex*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_query_types" invoker="get_query_types">
+        <doc xml:whitespace="preserve">Get an array of query types from the element.
+If the element doesn't implement a query types function,
+the query will be forwarded to the peer of a random linked sink pad.
+be freed or modified.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">An array of #GstQueryType elements that should not</doc>
+          <type name="QueryType" c:type="GstQueryType*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_state" invoker="get_state">
+        <doc xml:whitespace="preserve">Gets the state of the element.
+For elements that performed an ASYNC state change, as reported by
+gst_element_set_state(), this function will block up to the
+specified timeout value for the state change to complete.
+If the element completes the state change or goes into
+an error, this function returns immediately with a return value of
+%GST_STATE_CHANGE_SUCCESS or %GST_STATE_CHANGE_FAILURE respectively.
+For elements that did not return %GST_STATE_CHANGE_ASYNC, this function
+returns the current and pending state immediately.
+This function returns %GST_STATE_CHANGE_NO_PREROLL if the element
+successfully changed its state but is not able to provide data yet.
+This mostly happens for live sources that only produce data in
+%GST_STATE_PLAYING. While the state change return is equivalent to
+%GST_STATE_CHANGE_SUCCESS, it is returned to the application to signal that
+some sink elements might not be able to complete their state change because
+an element is not producing data to complete the preroll. When setting the
+element to playing, the preroll will complete and playback will start.
+and the last state change succeeded, %GST_STATE_CHANGE_ASYNC if the
+element is still performing a state change or
+%GST_STATE_CHANGE_FAILURE if the last state change failed.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%GST_STATE_CHANGE_SUCCESS if the element has no more pending state</doc>
+          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="state"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a pointer to #GstState to hold the state. Can be %NULL.</doc>
+            <type name="State" c:type="GstState*"/>
+          </parameter>
+          <parameter name="pending"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a pointer to #GstState to hold the pending state. Can be %NULL.</doc>
+            <type name="State" c:type="GstState*"/>
+          </parameter>
+          <parameter name="timeout" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstClockTime to specify the timeout for an async state change or %GST_CLOCK_TIME_NONE for infinite timeout.</doc>
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="no_more_pads" invoker="no_more_pads">
+        <doc xml:whitespace="preserve">Use this function to signal that the element does not expect any more pads
+to show up in the current pipeline. This function should be called whenever
+pads have been added by the element itself. Elements with #GST_PAD_SOMETIMES
+pad templates use this in combination with autopluggers to figure out that
+the element is done initializing its pads.
+This function emits the #GstElement::no-more-pads signal.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="pad_added">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="pad_removed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="provide_clock" invoker="provide_clock">
+        <doc xml:whitespace="preserve">Get the clock provided by the given element.
+&lt;note&gt;An element is only required to provide a clock in the PAUSED
+state. Some elements can provide a clock in other states.&lt;/note&gt;
+if no clock could be provided.  Unref after usage.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the GstClock provided by the element or %NULL</doc>
+          <type name="Clock" c:type="GstClock*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="query" invoker="query">
+        <doc xml:whitespace="preserve">Performs a query on the given element.
+For elements that don't implement a query handler, this function
+forwards the query to a random srcpad or to the peer of a
+random linked sinkpad of this element.
+Please note that some queries might need a running pipeline to work.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the query could be performed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="query" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstQuery.</doc>
+            <type name="Query" c:type="GstQuery*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="release_pad">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="request_new_pad" introspectable="0">
+        <return-value>
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="templ" transfer-ownership="none">
+            <type name="PadTemplate" c:type="GstPadTemplate*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="request_new_pad_full" introspectable="0">
+        <return-value>
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="templ" transfer-ownership="none">
+            <type name="PadTemplate" c:type="GstPadTemplate*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="send_event" invoker="send_event">
+        <doc xml:whitespace="preserve">Sends an event to an element. If the element doesn't implement an
+event handler, the event will be pushed on a random linked sink pad for
+upstream events or a random linked source pad for downstream events.
+This function takes owership of the provided event so you should
+gst_event_ref() it if you want to reuse the event after this call.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the event was handled.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="full">
+            <doc xml:whitespace="preserve">the #GstEvent to send to the element.</doc>
+            <type name="Event" c:type="GstEvent*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_bus" invoker="set_bus">
+        <doc xml:whitespace="preserve">Sets the bus of the element. Increases the refcount on the bus.
+For internal use only, unless you're testing elements.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="bus" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstBus to set.</doc>
+            <type name="Bus" c:type="GstBus*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_clock" invoker="set_clock">
+        <doc xml:whitespace="preserve">Sets the clock for the element. This function increases the
+refcount on the clock. Any previously set clock on the object
+is unreffed.
+clock when it, for example, is not able to slave its internal clock to the
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the element accepted the clock. An element can refuse a</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="clock" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstClock to set for the element.</doc>
+            <type name="Clock" c:type="GstClock*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_index" invoker="set_index">
+        <doc xml:whitespace="preserve">Set @index on the element. The refcount of the index
+will be increased, any previously set index is unreffed.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstIndex.</doc>
+            <type name="Index" c:type="GstIndex*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_state" invoker="set_state">
+        <doc xml:whitespace="preserve">Sets the state of the element. This function will try to set the
+requested state by going through all the intermediary states and calling
+the class's state change function for each.
+This function can return #GST_STATE_CHANGE_ASYNC, in which case the
+element will perform the remainder of the state change asynchronously in
+another thread.
+An application can use gst_element_get_state() to wait for the completion
+of the state change or it can wait for a state change message on the bus.
+State changes to %GST_STATE_READY or %GST_STATE_NULL never return
+#GST_STATE_CHANGE_ASYNC.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Result of the state change using #GstStateChangeReturn.</doc>
+          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the element's new #GstState.</doc>
+            <type name="State" c:type="GstState"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="abort_state" c:identifier="gst_element_abort_state">
+        <doc xml:whitespace="preserve">Abort the state change of the element. This function is used
+by elements that do asynchronous state changes and find out
+something is wrong.
+This function should be called with the STATE_LOCK held.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="add_pad" c:identifier="gst_element_add_pad">
+        <doc xml:whitespace="preserve">Adds a pad (link point) to @element. @pad's parent will be set to @element;
+see gst_object_set_parent() for refcounting information.
+Pads are not automatically activated so elements should perform the needed
+steps to activate the pad in case this pad is added in the PAUSED or PLAYING
+state. See gst_pad_set_active() for more information about activating pads.
+The pad and the element should be unlocked when calling this function.
+This function will emit the #GstElement::pad-added signal on the element.
+a pad with the same name already existed or the pad already had another
+parent.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the pad could be added. This function can fail when</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="full">
+            <doc xml:whitespace="preserve">the #GstPad to add to the element.</doc>
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="change_state" c:identifier="gst_element_change_state">
+        <doc xml:whitespace="preserve">Perform @transition on @element.
+This function must be called with STATE_LOCK held and is mainly used
+internally.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstStateChangeReturn of the state transition.</doc>
+          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="transition" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the requested transition</doc>
+            <type name="StateChange" c:type="GstStateChange"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="continue_state" c:identifier="gst_element_continue_state">
+        <doc xml:whitespace="preserve">Commit the state change of the element and proceed to the next
+pending state if any. This function is used
+by elements that do asynchronous state changes.
+The core will normally call this method automatically when an
+element returned %GST_STATE_CHANGE_SUCCESS from the state change function.
+If after calling this method the element still has not reached
+the pending state, the next state change is performed.
+This method is used internally and should normally not be called by plugins
+or applications.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The result of the commit state change.</doc>
+          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="ret" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The previous state return value</doc>
+            <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_all_pads"
+              c:identifier="gst_element_create_all_pads">
+        <doc xml:whitespace="preserve">Creates a pad for each pad template that is always available.
+This function is only useful during object intialization of
+subclasses of #GstElement.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="found_tags" c:identifier="gst_element_found_tags">
+        <doc xml:whitespace="preserve">Posts a message to the bus that new tags were found, and pushes an event
+to all sourcepads. Takes ownership of the @list.
+This is a utility method for elements. Applications should use the
+#GstTagSetter interface.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="full">
+            <doc xml:whitespace="preserve">list of tags.</doc>
+            <type name="TagList" c:type="GstTagList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="found_tags_for_pad"
+              c:identifier="gst_element_found_tags_for_pad">
+        <doc xml:whitespace="preserve">Posts a message to the bus that new tags were found and pushes the
+tags as event. Takes ownership of the @list.
+This is a utility method for elements. Applications should use the
+#GstTagSetter interface.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <doc xml:whitespace="preserve">pad on which to push tag-event</doc>
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+          <parameter name="list" transfer-ownership="full">
+            <doc xml:whitespace="preserve">the taglist to post on the bus and create event from</doc>
+            <type name="TagList" c:type="GstTagList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_base_time" c:identifier="gst_element_get_base_time">
+        <doc xml:whitespace="preserve">Returns the base time of the element. The base time is the
+absolute time of the clock when this element was last put to
+PLAYING. Subtracting the base time from the clock time gives
+the running time of the element.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the base time of the element.</doc>
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="get_bus" c:identifier="gst_element_get_bus">
+        <doc xml:whitespace="preserve">Returns the bus of the element. Note that only a #GstPipeline will provide a
+bus for the application.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the element's #GstBus. unref after usage.</doc>
+          <type name="Bus" c:type="GstBus*"/>
+        </return-value>
+      </method>
+      <method name="get_clock" c:identifier="gst_element_get_clock">
+        <doc xml:whitespace="preserve">Gets the currently configured clock of the element. This is the clock as was
+last set with gst_element_set_clock().
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #GstClock of the element. unref after usage.</doc>
+          <type name="Clock" c:type="GstClock*"/>
+        </return-value>
+      </method>
+      <method name="get_compatible_pad"
+              c:identifier="gst_element_get_compatible_pad">
+        <doc xml:whitespace="preserve">Looks for an unlinked pad to which the given pad can link. It is not
+guaranteed that linking the pads will work, though it should work in most
+cases.
+This function will first attempt to find a compatible unlinked ALWAYS pad,
+and if none can be found, it will request a compatible REQUEST pad by looking
+at the templates of @element.
+if one cannot be found. gst_object_unref() after usage.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #GstPad to which a link can be made, or %NULL</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstPad to find a compatible one for.</doc>
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstCaps to use as a filter.</doc>
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_compatible_pad_template"
+              c:identifier="gst_element_get_compatible_pad_template">
+        <doc xml:whitespace="preserve">Retrieves a pad template from @element that is compatible with @compattempl.
+Pads from compatible templates can be linked together.
+was found. No unreferencing is necessary.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a compatible #GstPadTemplate, or NULL if none</doc>
+          <type name="PadTemplate" c:type="GstPadTemplate*"/>
+        </return-value>
+        <parameters>
+          <parameter name="compattempl" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstPadTemplate to find a compatible template for</doc>
+            <type name="PadTemplate" c:type="GstPadTemplate*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_factory" c:identifier="gst_element_get_factory">
+        <doc xml:whitespace="preserve">Retrieves the factory that was used to create this element.
+element. no refcounting is needed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstElementFactory used for creating this</doc>
+          <type name="ElementFactory" c:type="GstElementFactory*"/>
+        </return-value>
+      </method>
+      <method name="get_index" c:identifier="gst_element_get_index">
+        <doc xml:whitespace="preserve">Gets the index from the element.
+element. unref after usage.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GstIndex or %NULL when no index was set on the</doc>
+          <type name="Index" c:type="GstIndex*"/>
+        </return-value>
+      </method>
+      <method name="get_pad"
+              c:identifier="gst_element_get_pad"
+              deprecated="This function is deprecated as it&apos;s unclear if the reference">
+        <doc xml:whitespace="preserve">Retrieves a pad from @element by name. Tries gst_element_get_static_pad()
+first, then gst_element_get_request_pad().
+to the result pad should be released with gst_object_unref() in case of a static pad
+or gst_element_release_request_pad() in case of a request pad.
+Use gst_element_get_static_pad() or gst_element_get_request_pad() instead.
+depending on the type of the pad.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #GstPad if found, otherwise %NULL. Unref or Release after usage,</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the pad to retrieve.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_query_types"
+              c:identifier="gst_element_get_query_types">
+        <doc xml:whitespace="preserve">Get an array of query types from the element.
+If the element doesn't implement a query types function,
+the query will be forwarded to the peer of a random linked sink pad.
+be freed or modified.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">An array of #GstQueryType elements that should not</doc>
+          <type name="QueryType" c:type="GstQueryType*"/>
+        </return-value>
+      </method>
+      <method name="get_request_pad"
+              c:identifier="gst_element_get_request_pad">
+        <doc xml:whitespace="preserve">Retrieves a pad from the element by name. This version only retrieves
+request pads. The pad should be released with
+gst_element_release_request_pad().
+This method is slow and will be deprecated in the future. New code should
+use gst_element_request_pad() with the requested template.
+Release after usage.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">requested #GstPad if found, otherwise %NULL.</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the request #GstPad to retrieve.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_start_time"
+              c:identifier="gst_element_get_start_time"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Returns the start time of the element. The start time is the
+running time of the clock when this element was last put to PAUSED.
+Usually the start_time is managed by a toplevel element such as
+#GstPipeline.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the start time of the element.</doc>
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="get_state" c:identifier="gst_element_get_state">
+        <doc xml:whitespace="preserve">Gets the state of the element.
+For elements that performed an ASYNC state change, as reported by
+gst_element_set_state(), this function will block up to the
+specified timeout value for the state change to complete.
+If the element completes the state change or goes into
+an error, this function returns immediately with a return value of
+%GST_STATE_CHANGE_SUCCESS or %GST_STATE_CHANGE_FAILURE respectively.
+For elements that did not return %GST_STATE_CHANGE_ASYNC, this function
+returns the current and pending state immediately.
+This function returns %GST_STATE_CHANGE_NO_PREROLL if the element
+successfully changed its state but is not able to provide data yet.
+This mostly happens for live sources that only produce data in
+%GST_STATE_PLAYING. While the state change return is equivalent to
+%GST_STATE_CHANGE_SUCCESS, it is returned to the application to signal that
+some sink elements might not be able to complete their state change because
+an element is not producing data to complete the preroll. When setting the
+element to playing, the preroll will complete and playback will start.
+and the last state change succeeded, %GST_STATE_CHANGE_ASYNC if the
+element is still performing a state change or
+%GST_STATE_CHANGE_FAILURE if the last state change failed.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%GST_STATE_CHANGE_SUCCESS if the element has no more pending state</doc>
+          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="state"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a pointer to #GstState to hold the state. Can be %NULL.</doc>
+            <type name="State" c:type="GstState*"/>
+          </parameter>
+          <parameter name="pending"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a pointer to #GstState to hold the pending state. Can be %NULL.</doc>
+            <type name="State" c:type="GstState*"/>
+          </parameter>
+          <parameter name="timeout" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstClockTime to specify the timeout for an async state change or %GST_CLOCK_TIME_NONE for infinite timeout.</doc>
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_static_pad" c:identifier="gst_element_get_static_pad">
+        <doc xml:whitespace="preserve">Retrieves a pad from @element by name. This version only retrieves
+already-existing (i.e. 'static') pads.
+unref after usage.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the requested #GstPad if found, otherwise %NULL.</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the static #GstPad to retrieve.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="implements_interface"
+              c:identifier="gst_element_implements_interface">
+        <doc xml:whitespace="preserve">Test whether the given element implements a certain interface of type
+iface_type, and test whether it is supported for this specific instance.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether or not the element implements the interface.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iface_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">(final) type of the interface which we want to be implemented</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_indexable" c:identifier="gst_element_is_indexable">
+        <doc xml:whitespace="preserve">Queries if the element can be indexed.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the element can be indexed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_locked_state"
+              c:identifier="gst_element_is_locked_state">
+        <doc xml:whitespace="preserve">Checks if the state of an element is locked.
+If the state of an element is locked, state changes of the parent don't
+affect the element.
+This way you can leave currently unused elements inside bins. Just lock their
+state before changing the state from #GST_STATE_NULL.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if the element's state is locked.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="iterate_pads"
+              c:identifier="gst_element_iterate_pads"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Retrieves an iterattor of @element's pads. The iterator should
+be freed after usage.
+after use.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #GstIterator of #GstPad. Unref each pad</doc>
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="iterate_sink_pads"
+              c:identifier="gst_element_iterate_sink_pads"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Retrieves an iterator of @element's sink pads.
+after use.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #GstIterator of #GstPad. Unref each pad</doc>
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="iterate_src_pads"
+              c:identifier="gst_element_iterate_src_pads"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Retrieves an iterator of @element's source pads.
+after use.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #GstIterator of #GstPad. Unref each pad</doc>
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="link" c:identifier="gst_element_link">
+        <doc xml:whitespace="preserve">Links @src to @dest. The link must be from source to
+destination; the other direction will not be tried. The function looks for
+existing pads that aren't linked yet. It will request new pads if necessary.
+Such pads need to be released manualy when unlinking.
+If multiple links are possible, only one is established.
+Make sure you have added your elements to a bin or pipeline with
+gst_bin_add() before trying to link them.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the elements could be linked, FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstElement containing the destination pad.</doc>
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="link_filtered" c:identifier="gst_element_link_filtered">
+        <doc xml:whitespace="preserve">Links @src to @dest using the given caps as filtercaps.
+The link must be from source to
+destination; the other direction will not be tried. The function looks for
+existing pads that aren't linked yet. It will request new pads if necessary.
+If multiple links are possible, only one is established.
+Make sure you have added your elements to a bin or pipeline with
+gst_bin_add() before trying to link them.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the pads could be linked, FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstElement containing the destination pad.</doc>
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter name="filter" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the #GstCaps to filter the link, or #NULL for no filter.</doc>
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="link_many"
+              c:identifier="gst_element_link_many"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Chain together a series of elements. Uses gst_element_link().
+Make sure you have added your elements to a bin or pipeline with
+gst_bin_add() before trying to link them.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE on success, FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="element_2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the second #GstElement in the link chain.</doc>
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="link_pads" c:identifier="gst_element_link_pads">
+        <doc xml:whitespace="preserve">Links the two named pads of the source and destination elements.
+Side effect is that if one of the pads has no parent, it becomes a
+child of the parent of the other element.  If they have different
+parents, the link fails.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the pads could be linked, FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="srcpadname"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the name of the #GstPad in source element or NULL for any pad.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="dest" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstElement containing the destination pad.</doc>
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter name="destpadname"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the name of the #GstPad in destination element, or NULL for any pad.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="link_pads_filtered"
+              c:identifier="gst_element_link_pads_filtered">
+        <doc xml:whitespace="preserve">Links the two named pads of the source and destination elements. Side effect
+is that if one of the pads has no parent, it becomes a child of the parent of
+the other element. If they have different parents, the link fails. If @caps
+is not #NULL, makes sure that the caps of the link is a subset of @caps.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the pads could be linked, FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="srcpadname"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the name of the #GstPad in source element or NULL for any pad.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="dest" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstElement containing the destination pad.</doc>
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter name="destpadname"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the name of the #GstPad in destination element or NULL for any pad.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="filter" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the #GstCaps to filter the link, or #NULL for no filter.</doc>
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="link_pads_full"
+              c:identifier="gst_element_link_pads_full"
+              version="0.10.30">
+        <doc xml:whitespace="preserve">Links the two named pads of the source and destination elements.
+Side effect is that if one of the pads has no parent, it becomes a
+child of the parent of the other element.  If they have different
+parents, the link fails.
+Calling gst_element_link_pads_full() with @flags == %GST_PAD_LINK_CHECK_DEFAULT
+is the same as calling gst_element_link_pads() and the recommended way of
+linking pads with safety checks applied.
+This is a convenience function for gst_pad_link_full().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the pads could be linked, FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="srcpadname"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the name of the #GstPad in source element or NULL for any pad.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="dest" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstElement containing the destination pad.</doc>
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter name="destpadname"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the name of the #GstPad in destination element, or NULL for any pad.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstPadLinkCheck to be performed when linking pads.</doc>
+            <type name="PadLinkCheck" c:type="GstPadLinkCheck"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lost_state" c:identifier="gst_element_lost_state">
+        <doc xml:whitespace="preserve">Brings the element to the lost state. This function calls
+gst_element_lost_state_full() with the new_base_time set to %TRUE.
+This function is used internally and should normally not be called from
+plugins or applications.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="lost_state_full"
+              c:identifier="gst_element_lost_state_full"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Brings the element to the lost state. The current state of the
+element is copied to the pending state so that any call to
+gst_element_get_state() will return %GST_STATE_CHANGE_ASYNC.
+An ASYNC_START message is posted with indication to distribute a new
+base_time to the element when @new_base_time is %TRUE.
+If the element was PLAYING, it will go to PAUSED. The element
+will be restored to its PLAYING state by the parent pipeline when it
+prerolls again.
+This is mostly used for elements that lost their preroll buffer
+in the %GST_STATE_PAUSED or %GST_STATE_PLAYING state after a flush,
+they will go to their pending state again when a new preroll buffer is
+queued. This function can only be called when the element is currently
+not in error or an async state change.
+This function is used internally and should normally not be called from
+plugins or applications.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_base_time" transfer-ownership="none">
+            <doc xml:whitespace="preserve">if a new base time should be distributed</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="message_full" c:identifier="gst_element_message_full">
+        <doc xml:whitespace="preserve">Post an error, warning or info message on the bus from inside an element.
+#GST_MESSAGE_INFO.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstMessageType</doc>
+            <type name="MessageType" c:type="GstMessageType"/>
+          </parameter>
+          <parameter name="domain" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the GStreamer GError domain this message belongs to</doc>
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter name="code" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the GError code belonging to the domain</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="full" allow-none="1">
+            <doc xml:whitespace="preserve">an allocated text string to be used as a replacement for the default message connected to code, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="debug" transfer-ownership="full" allow-none="1">
+            <doc xml:whitespace="preserve">an allocated debug message to be used as a replacement for the default debugging information, or %NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="file" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the source code file where the error was generated</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="function" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the source code function where the error was generated</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="line" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the source code line where the error was generated</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="no_more_pads" c:identifier="gst_element_no_more_pads">
+        <doc xml:whitespace="preserve">Use this function to signal that the element does not expect any more pads
+to show up in the current pipeline. This function should be called whenever
+pads have been added by the element itself. Elements with #GST_PAD_SOMETIMES
+pad templates use this in combination with autopluggers to figure out that
+the element is done initializing its pads.
+This function emits the #GstElement::no-more-pads signal.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="post_message" c:identifier="gst_element_post_message">
+        <doc xml:whitespace="preserve">Post a message on the element's #GstBus. This function takes ownership of the
+message; if you want to access the message after this call, you should add an
+additional reference before calling.
+%FALSE if the element did not have a bus.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the message was successfully posted. The function returns</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GstMessage to post</doc>
+            <type name="Message" c:type="GstMessage*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="provide_clock" c:identifier="gst_element_provide_clock">
+        <doc xml:whitespace="preserve">Get the clock provided by the given element.
+&lt;note&gt;An element is only required to provide a clock in the PAUSED
+state. Some elements can provide a clock in other states.&lt;/note&gt;
+if no clock could be provided.  Unref after usage.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the GstClock provided by the element or %NULL</doc>
+          <type name="Clock" c:type="GstClock*"/>
+        </return-value>
+      </method>
+      <method name="provides_clock" c:identifier="gst_element_provides_clock">
+        <doc xml:whitespace="preserve">Query if the element provides a clock. A #GstClock provided by an
+element can be used as the global #GstClock for the pipeline.
+An element that can provide a clock is only required to do so in the PAUSED
+state, this means when it is fully negotiated and has allocated the resources
+to operate the clock.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the element provides a clock</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="query" c:identifier="gst_element_query">
+        <doc xml:whitespace="preserve">Performs a query on the given element.
+For elements that don't implement a query handler, this function
+forwards the query to a random srcpad or to the peer of a
+random linked sinkpad of this element.
+Please note that some queries might need a running pipeline to work.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the query could be performed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="query" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstQuery.</doc>
+            <type name="Query" c:type="GstQuery*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_convert" c:identifier="gst_element_query_convert">
+        <doc xml:whitespace="preserve">Queries an element to convert @src_val in @src_format to @dest_format.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the query could be performed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="src_format"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GstFormat to convert from.</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="src_val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a value to convert.</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="dest_format"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">a pointer to the #GstFormat to convert to.</doc>
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="dest_val"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">a pointer to the result.</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_duration" c:identifier="gst_element_query_duration">
+        <doc xml:whitespace="preserve">Queries an element for the total stream duration.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the query could be performed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">a pointer to the #GstFormat asked for. On return contains the #GstFormat used.</doc>
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="duration"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">A location in which to store the total duration, or NULL.</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_position" c:identifier="gst_element_query_position">
+        <doc xml:whitespace="preserve">Queries an element for the stream position. If one repeatedly calls this
+function one can also create and reuse it in gst_element_query().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the query could be performed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">a pointer to the #GstFormat asked for. On return contains the #GstFormat used.</doc>
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="cur"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a location in which to store the current position, or NULL.</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="release_request_pad"
+              c:identifier="gst_element_release_request_pad">
+        <doc xml:whitespace="preserve">Makes the element free the previously requested pad as obtained
+with gst_element_get_request_pad().
+This does not unref the pad. If the pad was created by using
+gst_element_get_request_pad(), gst_element_release_request_pad() needs to be
+followed by gst_object_unref() to free the @pad.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstPad to release.</doc>
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_pad" c:identifier="gst_element_remove_pad">
+        <doc xml:whitespace="preserve">Removes @pad from @element. @pad will be destroyed if it has not been
+referenced elsewhere using gst_object_unparent().
+This function is used by plugin developers and should not be used
+by applications. Pads that were dynamically requested from elements
+with gst_element_get_request_pad() should be released with the
+gst_element_release_request_pad() function instead.
+Pads are not automatically deactivated so elements should perform the needed
+steps to deactivate the pad in case this pad is removed in the PAUSED or
+PLAYING state. See gst_pad_set_active() for more information about
+deactivating pads.
+The pad and the element should be unlocked when calling this function.
+This function will emit the #GstElement::pad-removed signal on the element.
+pad does not belong to the provided element.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the pad could be removed. Can return %FALSE if the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstPad to remove from the element.</doc>
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="request_pad"
+              c:identifier="gst_element_request_pad"
+              version="0.10.32">
+        <doc xml:whitespace="preserve">Retrieves a request pad from the element according to the provided template.
+If the @caps are specified and the element implements thew new
+request_new_pad_full virtual method, the element will use them to select
+which pad to create.
+The pad should be released with gst_element_release_request_pad().
+Release after usage.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">requested #GstPad if found, otherwise %NULL.</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="templ" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstPadTemplate of which we want a pad of.</doc>
+            <type name="PadTemplate" c:type="GstPadTemplate*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the name of the request #GstPad to retrieve. Can be %NULL.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the caps of the pad we want to request. Can be %NULL.</doc>
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="requires_clock" c:identifier="gst_element_requires_clock">
+        <doc xml:whitespace="preserve">Query if the element requires a clock.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the element requires a clock</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="seek" c:identifier="gst_element_seek">
+        <doc xml:whitespace="preserve">Sends a seek event to an element. See gst_event_new_seek() for the details of
+the parameters. The seek event is sent to the element using
+gst_element_send_event().
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the event was handled.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="rate" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The new playback rate</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The format of the seek values</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The optional seek flags.</doc>
+            <type name="SeekFlags" c:type="GstSeekFlags"/>
+          </parameter>
+          <parameter name="cur_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The type and flags for the new current position</doc>
+            <type name="SeekType" c:type="GstSeekType"/>
+          </parameter>
+          <parameter name="cur" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The value of the new current position</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The type and flags for the new stop position</doc>
+            <type name="SeekType" c:type="GstSeekType"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The value of the new stop position</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="seek_simple"
+              c:identifier="gst_element_seek_simple"
+              version="0.10.7">
+        <doc xml:whitespace="preserve">Simple API to perform a seek on the given element, meaning it just seeks
+to the given position relative to the start of the stream. For more complex
+operations like segment seeks (e.g. for looping) or changing the playback
+rate or seeking relative to the last configured playback segment you should
+use gst_element_seek().
+In a completely prerolled PAUSED or PLAYING pipeline, seeking is always
+guaranteed to return %TRUE on a seekable media type or %FALSE when the media
+type is certainly not seekable (such as a live stream).
+Some elements allow for seeking in the READY state, in this
+case they will store the seek event and execute it when they are put to
+PAUSED. If the element supports seek in READY, it will always return %TRUE when
+it receives the event in the READY state.
+executed instantly though)</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the seek operation succeeded (the seek might not always be</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstFormat to execute the seek in, such as #GST_FORMAT_TIME</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="seek_flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">seek options; playback applications will usually want to use GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_KEY_UNIT here</doc>
+            <type name="SeekFlags" c:type="GstSeekFlags"/>
+          </parameter>
+          <parameter name="seek_pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position to seek to (relative to the start); if you are doing a seek in #GST_FORMAT_TIME this value is in nanoseconds - multiply with #GST_SECOND to convert seconds to nanoseconds or with #GST_MSECOND to convert milliseconds to nanoseconds.</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send_event" c:identifier="gst_element_send_event">
+        <doc xml:whitespace="preserve">Sends an event to an element. If the element doesn't implement an
+event handler, the event will be pushed on a random linked sink pad for
+upstream events or a random linked source pad for downstream events.
+This function takes owership of the provided event so you should
+gst_event_ref() it if you want to reuse the event after this call.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the event was handled.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="full">
+            <doc xml:whitespace="preserve">the #GstEvent to send to the element.</doc>
+            <type name="Event" c:type="GstEvent*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_base_time" c:identifier="gst_element_set_base_time">
+        <doc xml:whitespace="preserve">Set the base time of an element. See gst_element_get_base_time().
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="time" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the base time to set.</doc>
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_bus" c:identifier="gst_element_set_bus">
+        <doc xml:whitespace="preserve">Sets the bus of the element. Increases the refcount on the bus.
+For internal use only, unless you're testing elements.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="bus" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstBus to set.</doc>
+            <type name="Bus" c:type="GstBus*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_clock" c:identifier="gst_element_set_clock">
+        <doc xml:whitespace="preserve">Sets the clock for the element. This function increases the
+refcount on the clock. Any previously set clock on the object
+is unreffed.
+clock when it, for example, is not able to slave its internal clock to the
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the element accepted the clock. An element can refuse a</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="clock" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstClock to set for the element.</doc>
+            <type name="Clock" c:type="GstClock*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_index" c:identifier="gst_element_set_index">
+        <doc xml:whitespace="preserve">Set @index on the element. The refcount of the index
+will be increased, any previously set index is unreffed.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstIndex.</doc>
+            <type name="Index" c:type="GstIndex*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_locked_state"
+              c:identifier="gst_element_set_locked_state">
+        <doc xml:whitespace="preserve">Locks the state of an element, so state changes of the parent don't affect
+this element anymore.
+MT safe.
+or the elements state-locking needed no change.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the state was changed, FALSE if bad parameters were given</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="locked_state" transfer-ownership="none">
+            <doc xml:whitespace="preserve">TRUE to lock the element's state</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_start_time"
+              c:identifier="gst_element_set_start_time"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Set the start time of an element. The start time of the element is the
+running time of the element when it last went to the PAUSED state. In READY
+or after a flushing seek, it is set to 0.
+Toplevel elements like #GstPipeline will manage the start_time and
+base_time on its children. Setting the start_time to #GST_CLOCK_TIME_NONE
+on such a toplevel element will disable the distribution of the base_time to
+the children and can be useful if the application manages the base_time
+itself, for example if you want to synchronize capture from multiple
+pipelines, and you can also ensure that the pipelines have the same clock.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="time" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the base time to set.</doc>
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_state" c:identifier="gst_element_set_state">
+        <doc xml:whitespace="preserve">Sets the state of the element. This function will try to set the
+requested state by going through all the intermediary states and calling
+the class's state change function for each.
+This function can return #GST_STATE_CHANGE_ASYNC, in which case the
+element will perform the remainder of the state change asynchronously in
+another thread.
+An application can use gst_element_get_state() to wait for the completion
+of the state change or it can wait for a state change message on the bus.
+State changes to %GST_STATE_READY or %GST_STATE_NULL never return
+#GST_STATE_CHANGE_ASYNC.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Result of the state change using #GstStateChangeReturn.</doc>
+          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the element's new #GstState.</doc>
+            <type name="State" c:type="GstState"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sync_state_with_parent"
+              c:identifier="gst_element_sync_state_with_parent">
+        <doc xml:whitespace="preserve">Tries to change the state of the element to the same as its parent.
+If this function returns FALSE, the state of element is undefined.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if the element's state could be synced to the parent's state.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="unlink" c:identifier="gst_element_unlink">
+        <doc xml:whitespace="preserve">Unlinks all source pads of the source element with all sink pads
+of the sink element to which they are linked.
+If the link has been made using gst_element_link(), it could have created an
+requestpad, which has to be released using gst_element_release_request_pad().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the sink #GstElement to unlink.</doc>
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unlink_many"
+              c:identifier="gst_element_unlink_many"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Unlinks a series of elements. Uses gst_element_unlink().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="element_2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the second #GstElement in the link chain.</doc>
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unlink_pads" c:identifier="gst_element_unlink_pads">
+        <doc xml:whitespace="preserve">Unlinks the two named pads of the source and destination elements.
+This is a convenience function for gst_pad_unlink().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="srcpadname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the #GstPad in source element.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="dest" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstElement containing the destination pad.</doc>
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter name="destpadname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the #GstPad in destination element.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="state_lock">
+        <type name="GLib.StaticRecMutex" c:type="GStaticRecMutex*"/>
+      </field>
+      <field name="state_cond">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="state_cookie">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="current_state">
+        <type name="State" c:type="GstState"/>
+      </field>
+      <field name="next_state">
+        <type name="State" c:type="GstState"/>
+      </field>
+      <field name="pending_state">
+        <type name="State" c:type="GstState"/>
+      </field>
+      <field name="last_return">
+        <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+      </field>
+      <field name="bus">
+        <type name="Bus" c:type="GstBus*"/>
+      </field>
+      <field name="clock">
+        <type name="Clock" c:type="GstClock*"/>
+      </field>
+      <field name="base_time">
+        <type name="ClockTimeDiff" c:type="GstClockTimeDiff"/>
+      </field>
+      <field name="numpads">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <field name="pads">
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="numsrcpads">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <field name="srcpads">
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="numsinkpads">
+        <type name="guint16" c:type="guint16"/>
+      </field>
+      <field name="sinkpads">
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="pads_cookie">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <union name="abidata" c:type="abidata">
+        <record name="ABI" c:type="ABI">
+          <field name="target_state" writable="1">
+            <type name="State" c:type="GstState"/>
+          </field>
+          <field name="start_time" writable="1">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </field>
+        </record>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </field>
+      </union>
+      <glib:signal name="no-more-pads">
+        <doc xml:whitespace="preserve">This signals that the element will not generate more dynamic pads.
+Note that this signal will usually be emitted from the context of
+the streaming thread.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="pad-added">
+        <doc xml:whitespace="preserve">a new #GstPad has been added to the element. Note that this signal will
+usually be emitted from the context of the streaming thread. Also keep in
+mind that if you add new elements to the pipeline in the signal handler
+you will need to set them to the desired target state with
+gst_element_set_state() or gst_element_sync_state_with_parent().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_pad" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the pad that has been added</doc>
+            <type name="Pad"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="pad-removed">
+        <doc xml:whitespace="preserve">a #GstPad has been removed from the element</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="old_pad" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the pad that has been removed</doc>
+            <type name="Pad"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="ElementClass"
+            c:type="GstElementClass"
+            glib:is-gtype-struct-for="Element">
+      <doc xml:whitespace="preserve">GStreamer element class. Override the vmethods to implement the element
+functionality.</doc>
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="details">
+        <type name="ElementDetails" c:type="GstElementDetails"/>
+      </field>
+      <field name="elementfactory">
+        <type name="ElementFactory" c:type="GstElementFactory*"/>
+      </field>
+      <field name="padtemplates">
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="numpadtemplates">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="pad_templ_cookie">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="pad_added">
+        <callback name="pad_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="pad" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pad_removed">
+        <callback name="pad_removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="pad" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="no_more_pads">
+        <callback name="no_more_pads">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="request_new_pad" introspectable="0">
+        <callback name="request_new_pad" introspectable="0">
+          <return-value>
+            <type name="Pad" c:type="GstPad*"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="templ" transfer-ownership="none">
+              <type name="PadTemplate" c:type="GstPadTemplate*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="release_pad">
+        <callback name="release_pad">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="pad" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_state">
+        <callback name="get_state">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%GST_STATE_CHANGE_SUCCESS if the element has no more pending state</doc>
+            <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="state"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">a pointer to #GstState to hold the state. Can be %NULL.</doc>
+              <type name="State" c:type="GstState*"/>
+            </parameter>
+            <parameter name="pending"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full"
+                       allow-none="1">
+              <doc xml:whitespace="preserve">a pointer to #GstState to hold the pending state. Can be %NULL.</doc>
+              <type name="State" c:type="GstState*"/>
+            </parameter>
+            <parameter name="timeout" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GstClockTime to specify the timeout for an async state change or %GST_CLOCK_TIME_NONE for infinite timeout.</doc>
+              <type name="ClockTime" c:type="GstClockTime"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_state">
+        <callback name="set_state">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">Result of the state change using #GstStateChangeReturn.</doc>
+            <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="state" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the element's new #GstState.</doc>
+              <type name="State" c:type="GstState"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="change_state">
+        <callback name="change_state">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstStateChangeReturn of the state transition.</doc>
+            <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="transition" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the requested transition</doc>
+              <type name="StateChange" c:type="GstStateChange"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_bus">
+        <callback name="set_bus">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="bus" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the #GstBus to set.</doc>
+              <type name="Bus" c:type="GstBus*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="provide_clock">
+        <callback name="provide_clock">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">the GstClock provided by the element or %NULL</doc>
+            <type name="Clock" c:type="GstClock*"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_clock">
+        <callback name="set_clock">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the element accepted the clock. An element can refuse a</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="clock" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the #GstClock to set for the element.</doc>
+              <type name="Clock" c:type="GstClock*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_index">
+        <callback name="get_index">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GstIndex or %NULL when no index was set on the</doc>
+            <type name="Index" c:type="GstIndex*"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_index">
+        <callback name="set_index">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="index" transfer-ownership="none">
+              <doc xml:whitespace="preserve">a #GstIndex.</doc>
+              <type name="Index" c:type="GstIndex*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="send_event">
+        <callback name="send_event">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if the event was handled.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="full">
+              <doc xml:whitespace="preserve">the #GstEvent to send to the element.</doc>
+              <type name="Event" c:type="GstEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_query_types">
+        <callback name="get_query_types">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">An array of #GstQueryType elements that should not</doc>
+            <type name="QueryType" c:type="GstQueryType*"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query">
+        <callback name="query">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">TRUE if the query could be performed.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="query" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the #GstQuery.</doc>
+              <type name="Query" c:type="GstQuery*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="meta_data" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="request_new_pad_full" introspectable="0">
+        <callback name="request_new_pad_full" introspectable="0">
+          <return-value>
+            <type name="Pad" c:type="GstPad*"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="templ" transfer-ownership="none">
+              <type name="PadTemplate" c:type="GstPadTemplate*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Caps" c:type="GstCaps*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+      <method name="add_pad_template"
+              c:identifier="gst_element_class_add_pad_template">
+        <doc xml:whitespace="preserve">Adds a padtemplate to an element class. This is mainly used in the _base_init
+functions of classes.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="templ" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstPadTemplate to add to the element class.</doc>
+            <type name="PadTemplate" c:type="GstPadTemplate*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pad_template"
+              c:identifier="gst_element_class_get_pad_template">
+        <doc xml:whitespace="preserve">Retrieves a padtemplate from @element_class with the given name.
+&lt;note&gt;If you use this function in the #GInstanceInitFunc of an object class
+that has subclasses, make sure to pass the g_class parameter of the
+#GInstanceInitFunc here.&lt;/note&gt;
+if none was found. No unreferencing is necessary.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstPadTemplate with the given name, or %NULL</doc>
+          <type name="PadTemplate" c:type="GstPadTemplate*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the #GstPadTemplate to get.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pad_template_list"
+              c:identifier="gst_element_class_get_pad_template_list">
+        <doc xml:whitespace="preserve">Retrieves a list of the pad templates associated with @element_class. The
+list must not be modified by the calling code.
+&lt;note&gt;If you use this function in the #GInstanceInitFunc of an object class
+that has subclasses, make sure to pass the g_class parameter of the
+#GInstanceInitFunc here.&lt;/note&gt;
+pad templates.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GList of</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="PadTemplate"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="install_std_props"
+              c:identifier="gst_element_class_install_std_props"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Adds a list of standardized properties with types to the @klass.
+the id is for the property switch in your get_prop method, and
+the flags determine readability / writeability.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the first property. in a NULL terminated</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_details"
+              c:identifier="gst_element_class_set_details"
+              deprecated="Use gst_element_class_set_details_simple() instead.">
+        <doc xml:whitespace="preserve">Sets the detailed information for a #GstElementClass.
+&lt;note&gt;This function is for use in _base_init functions only.&lt;/note&gt;
+The @details are copied.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="details" transfer-ownership="none">
+            <doc xml:whitespace="preserve">details to set</doc>
+            <type name="ElementDetails" c:type="GstElementDetails*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_details_simple"
+              c:identifier="gst_element_class_set_details_simple"
+              version="0.10.14">
+        <doc xml:whitespace="preserve">Sets the detailed information for a #GstElementClass. Simpler version of
+gst_element_class_set_details() that generates less linker overhead.
+&lt;note&gt;This function is for use in _base_init functions only.&lt;/note&gt;
+The detail parameter strings are copied into the #GstElementDetails for
+the element class.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="longname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The long English name of the element. E.g. "File Sink"</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="classification" transfer-ownership="none">
+            <doc xml:whitespace="preserve">String describing the type of element, as an unordered list separated with slashes ('/'). See draft-klass.txt of the design docs for more details and common types. E.g: "Sink/File"</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="description" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Sentence describing the purpose of the element. E.g: "Write stream to a file"</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="author" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Name and contact details of the author(s). Use \n to separate multiple author details. E.g: "Joe Bloggs &amp;lt;joe.blogs at foo.com&amp;gt;"</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_documentation_uri"
+              c:identifier="gst_element_class_set_documentation_uri"
+              version="0.10.31">
+        <doc xml:whitespace="preserve">Set uri pointing to user documentation. Applications can use this to show
+help for e.g. effects to users.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">uri of element documentation</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_name"
+              c:identifier="gst_element_class_set_icon_name"
+              version="0.10.31">
+        <doc xml:whitespace="preserve">Elements that bridge to certain other products can include an icon of that
+used product. Application can show the icon in menus/selectors to help
+identifying specific elements.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of an icon</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="ElementDetails" c:type="GstElementDetails">
+      <doc xml:whitespace="preserve">This struct defines the public information about a #GstElement. It contains
+meta-data about the element that is mostly for the benefit of editors.
+The @klass member can be used by applications to filter elements based
+on functionality.</doc>
+      <field name="longname" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="klass" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="description" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="author" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <class name="ElementFactory"
+           c:symbol-prefix="element_factory"
+           c:type="GstElementFactory"
+           parent="PluginFeature"
+           glib:type-name="GstElementFactory"
+           glib:get-type="gst_element_factory_get_type"
+           glib:type-struct="ElementFactoryClass">
+      <doc xml:whitespace="preserve">#GstElementFactory is used to create instances of elements. A
+GstElementfactory can be added to a #GstPlugin as it is also a
+#GstPluginFeature.
+Use the gst_element_factory_find() and gst_element_factory_create()
+functions to create element instances or use gst_element_factory_make() as a
+convenient shortcut.
+The following code example shows you how to create a GstFileSrc element.
+&lt;example&gt;
+&lt;title&gt;Using an element factory&lt;/title&gt;
+&lt;programlisting language="c"&gt;
+#include &amp;lt;gst/gst.h&amp;gt;
+GstElement *src;
+GstElementFactory *srcfactory;
+gst_init (&amp;amp;argc, &amp;amp;argv);
+srcfactory = gst_element_factory_find ("filesrc");
+g_return_if_fail (srcfactory != NULL);
+src = gst_element_factory_create (srcfactory, "src");
+g_return_if_fail (src != NULL);
+...
+&lt;/programlisting&gt;
+&lt;/example&gt;
+Last reviewed on 2005-11-23 (0.9.5)</doc>
+      <function name="find" c:identifier="gst_element_factory_find">
+        <doc xml:whitespace="preserve">Search for an element factory of the given name. Refs the returned
+element factory; caller is responsible for unreffing.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">#GstElementFactory if found, NULL otherwise</doc>
+          <type name="ElementFactory" c:type="GstElementFactory*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of factory to find</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="list_filter"
+                c:identifier="gst_element_factory_list_filter"
+                version="0.10.31">
+        <doc xml:whitespace="preserve">Filter out all the elementfactories in @list that can handle @caps in
+the given direction.
+If @subsetonly is %TRUE, then only the elements whose pads templates
+are a complete superset of @caps will be returned. Else any element
+whose pad templates caps can intersect with @caps will be returned.
+#GstElementFactory elements that match the given requisits.
+Use #gst_plugin_feature_list_free after usage.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GList of</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="ElementFactory"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GList of #GstElementFactory to filter</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="ElementFactory"/>
+            </type>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstCaps</doc>
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+          <parameter name="direction" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstPadDirection to filter on</doc>
+            <type name="PadDirection" c:type="GstPadDirection"/>
+          </parameter>
+          <parameter name="subsetonly" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether to filter on caps subsets or not.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="list_get_elements"
+                c:identifier="gst_element_factory_list_get_elements"
+                version="0.10.31">
+        <doc xml:whitespace="preserve">Get a list of factories that match the given @type. Only elements
+with a rank greater or equal to @minrank will be returned.
+The list of factories is returned by decreasing rank.
+#GstElementFactory elements. Use gst_plugin_feature_list_free() after
+usage.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GList of</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="ElementFactory"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstElementFactoryListType</doc>
+            <type name="ElementFactoryListType"
+                  c:type="GstElementFactoryListType"/>
+          </parameter>
+          <parameter name="minrank" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Minimum rank</doc>
+            <type name="Rank" c:type="GstRank"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="make" c:identifier="gst_element_factory_make">
+        <doc xml:whitespace="preserve">Create a new element of the type defined by the given element factory.
+If name is NULL, then the element will receive a guaranteed unique name,
+consisting of the element factory name and a number.
+If name is given, it will be given the name supplied.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">new #GstElement or NULL if unable to create element</doc>
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="factoryname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a named factory to instantiate</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">name of new element</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="can_sink_all_caps"
+              c:identifier="gst_element_factory_can_sink_all_caps"
+              version="0.10.33">
+        <doc xml:whitespace="preserve">Checks if the factory can sink all possible capabilities.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the caps are fully compatible.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the caps to check</doc>
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="can_sink_any_caps"
+              c:identifier="gst_element_factory_can_sink_any_caps"
+              version="0.10.33">
+        <doc xml:whitespace="preserve">Checks if the factory can sink any possible capability.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the caps have a common subset.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the caps to check</doc>
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="can_sink_caps"
+              c:identifier="gst_element_factory_can_sink_caps"
+              deprecated="use gst_element_factory_can_sink_all_caps() instead.">
+        <doc xml:whitespace="preserve">Checks if the factory can sink the given capability.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if it can sink the capabilities</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the caps to check</doc>
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="can_src_all_caps"
+              c:identifier="gst_element_factory_can_src_all_caps"
+              version="0.10.33">
+        <doc xml:whitespace="preserve">Checks if the factory can src all possible capabilities.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the caps are fully compatible.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the caps to check</doc>
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="can_src_any_caps"
+              c:identifier="gst_element_factory_can_src_any_caps"
+              version="0.10.33">
+        <doc xml:whitespace="preserve">Checks if the factory can src any possible capability.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the caps have a common subset.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the caps to check</doc>
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="can_src_caps"
+              c:identifier="gst_element_factory_can_src_caps"
+              deprecated="use gst_element_factory_can_src_all_caps() instead.">
+        <doc xml:whitespace="preserve">Checks if the factory can source the given capability.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if it can src the capabilities</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the caps to check</doc>
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create" c:identifier="gst_element_factory_create">
+        <doc xml:whitespace="preserve">Create a new element of the type defined by the given elementfactory.
+It will be given the name supplied, since all elements require a name as
+their first argument.
+be created</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">new #GstElement or NULL if the element couldn't</doc>
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of new element</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_author" c:identifier="gst_element_factory_get_author">
+        <doc xml:whitespace="preserve">Gets the author for this factory.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the author</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_description"
+              c:identifier="gst_element_factory_get_description">
+        <doc xml:whitespace="preserve">Gets the description for this factory.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the description</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_documentation_uri"
+              c:identifier="gst_element_factory_get_documentation_uri"
+              version="0.10.31">
+        <doc xml:whitespace="preserve">Gets documentation uri for this factory if set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the documentation uri</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_element_type"
+              c:identifier="gst_element_factory_get_element_type">
+        <doc xml:whitespace="preserve">Get the #GType for elements managed by this factory. The type can
+only be retrieved if the element factory is loaded, which can be
+assured with gst_plugin_feature_load().
+the factory is not loaded.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GType for elements managed by this factory or 0 if</doc>
+          <type name="GType" c:type="GType"/>
+        </return-value>
+      </method>
+      <method name="get_icon_name"
+              c:identifier="gst_element_factory_get_icon_name"
+              version="0.10.31">
+        <doc xml:whitespace="preserve">Gets icon name for this factory if set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the icon name</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_klass" c:identifier="gst_element_factory_get_klass">
+        <doc xml:whitespace="preserve">Gets the class for this factory.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the class</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_longname"
+              c:identifier="gst_element_factory_get_longname">
+        <doc xml:whitespace="preserve">Gets the longname for this factory</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the longname</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_num_pad_templates"
+              c:identifier="gst_element_factory_get_num_pad_templates">
+        <doc xml:whitespace="preserve">Gets the number of pad_templates in this factory.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of pad_templates</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_static_pad_templates"
+              c:identifier="gst_element_factory_get_static_pad_templates">
+        <doc xml:whitespace="preserve">Gets the #GList of #GstStaticPadTemplate for this factory.
+static pad templates</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="StaticPadTemplate"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_uri_protocols"
+              c:identifier="gst_element_factory_get_uri_protocols">
+        <doc xml:whitespace="preserve">Gets a NULL-terminated array of protocols this element supports or NULL if
+no protocols are supported. You may not change the contents of the returned
+array, as it is still owned by the element factory. Use g_strdupv() to
+make a copy of the protocol string array if you need to.
+or NULL</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the supported protocols</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="get_uri_type"
+              c:identifier="gst_element_factory_get_uri_type">
+        <doc xml:whitespace="preserve">Gets the type of URIs the element supports or #GST_URI_UNKNOWN if none.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">type of URIs this element supports</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="has_interface"
+              c:identifier="gst_element_factory_has_interface"
+              version="0.10.14">
+        <doc xml:whitespace="preserve">Check if @factory implements the interface with name @interfacename.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">#TRUE when @factory implement the interface.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="interfacename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an interface name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_is_type"
+              c:identifier="gst_element_factory_list_is_type"
+              version="0.10.31">
+        <doc xml:whitespace="preserve">Check if @factory if of the given types.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @factory is of @type.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstElementFactoryListType</doc>
+            <type name="ElementFactoryListType"
+                  c:type="GstElementFactoryListType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent">
+        <type name="PluginFeature" c:type="GstPluginFeature"/>
+      </field>
+      <field name="type">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="details">
+        <type name="ElementDetails" c:type="GstElementDetails"/>
+      </field>
+      <field name="staticpadtemplates">
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="numpadtemplates">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="uri_type">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="uri_protocols">
+        <type name="utf8" c:type="gchar**"/>
+      </field>
+      <field name="interfaces">
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="meta_data" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </class>
+    <record name="ElementFactoryClass"
+            c:type="GstElementFactoryClass"
+            glib:is-gtype-struct-for="ElementFactory">
+      <field name="parent_class">
+        <type name="PluginFeatureClass" c:type="GstPluginFeatureClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="ElementFlags" c:type="GstElementFlags">
+      <doc xml:whitespace="preserve">The standard flags that an element may have.</doc>
+      <member name="locked_state"
+              value="16"
+              c:identifier="GST_ELEMENT_LOCKED_STATE"/>
+      <member name="is_sink" value="32" c:identifier="GST_ELEMENT_IS_SINK"/>
+      <member name="unparenting"
+              value="64"
+              c:identifier="GST_ELEMENT_UNPARENTING"/>
+      <member name="is_source"
+              value="128"
+              c:identifier="GST_ELEMENT_IS_SOURCE"/>
+      <member name="flag_last"
+              value="1048576"
+              c:identifier="GST_ELEMENT_FLAG_LAST"/>
+    </bitfield>
+    <class name="Event"
+           c:symbol-prefix="event"
+           c:type="GstEvent"
+           parent="MiniObject"
+           glib:type-name="GstEvent"
+           glib:get-type="gst_event_get_type"
+           glib:type-struct="EventClass"
+           glib:fundamental="1">
+      <doc xml:whitespace="preserve">The event class provides factory methods to construct events for sending
+and functions to query (parse) received events.
+Events are usually created with gst_event_new_*() which takes event-type
+specific parameters as arguments.
+To send an event application will usually use gst_element_send_event() and
+elements will use gst_pad_send_event() or gst_pad_push_event().
+The event should be unreffed with gst_event_unref() if it has not been sent.
+Events that have been received can be parsed with their respective 
+gst_event_parse_*() functions. It is valid to pass %NULL for unwanted details.
+Events are passed between elements in parallel to the data stream. Some events
+are serialized with buffers, others are not. Some events only travel downstream,
+others only upstream. Some events can travel both upstream and downstream. 
+The events are used to signal special conditions in the datastream such as
+EOS (end of stream) or the start of a new stream-segment.
+Events are also used to flush the pipeline of any pending data.
+Most of the event API is used inside plugins. Applications usually only 
+construct and use seek events. 
+To do that gst_event_new_seek() is used to create a seek event. It takes
+the needed parameters to specity seeking time and mode.
+&lt;example&gt;
+&lt;title&gt;performing a seek on a pipeline&lt;/title&gt;
+&lt;programlisting&gt;
+GstEvent *event;
+gboolean result;
+...
+// construct a seek event to play the media from second 2 to 5, flush
+// the pipeline to decrease latency.
+event = gst_event_new_seek (1.0, 
+GST_FORMAT_TIME, 
+GST_SEEK_FLAG_FLUSH,
+GST_SEEK_TYPE_SET, 2 * GST_SECOND,
+GST_SEEK_TYPE_SET, 5 * GST_SECOND);
+...
+result = gst_element_send_event (pipeline, event);
+if (!result)
+g_warning ("seek failed");
+...
+&lt;/programlisting&gt;
+&lt;/example&gt;
+Last reviewed on 2006-09-6 (0.10.10)</doc>
+      <constructor name="new_buffer_size"
+                   c:identifier="gst_event_new_buffer_size">
+        <doc xml:whitespace="preserve">Create a new buffersize event. The event is sent downstream and notifies
+elements that they should provide a buffer of the specified dimensions.
+When the @async flag is set, a thread boundary is prefered.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstEvent</doc>
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">buffer format</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="minsize" transfer-ownership="none">
+            <doc xml:whitespace="preserve">minimum buffer size</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="maxsize" transfer-ownership="none">
+            <doc xml:whitespace="preserve">maximum buffer size</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="async" transfer-ownership="none">
+            <doc xml:whitespace="preserve">thread behavior</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_custom" c:identifier="gst_event_new_custom">
+        <doc xml:whitespace="preserve">Create a new custom-typed event. This can be used for anything not
+handled by other event-specific functions to pass an event to another
+element.
+Make sure to allocate an event type with the #GST_EVENT_MAKE_TYPE macro,
+assigning a free number and filling in the correct direction and
+serialization flags.
+New custom events can also be created by subclassing the event type if
+needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new custom event.</doc>
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The type of the new event</doc>
+            <type name="EventType" c:type="GstEventType"/>
+          </parameter>
+          <parameter name="structure" transfer-ownership="full">
+            <doc xml:whitespace="preserve">the structure for the event. The event will take ownership of the structure.</doc>
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_eos" c:identifier="gst_event_new_eos">
+        <doc xml:whitespace="preserve">Create a new EOS event. The eos event can only travel downstream
+synchronized with the buffer flow. Elements that receive the EOS
+event on a pad can return #GST_FLOW_UNEXPECTED as a #GstFlowReturn
+when data after the EOS event arrives.
+The EOS event will travel down to the sink elements in the pipeline
+which will then post the #GST_MESSAGE_EOS on the bus after they have
+finished playing any buffered data.
+When all sinks have posted an EOS message, an EOS message is
+forwarded to the application.
+The EOS event itself will not cause any state transitions of the pipeline.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new EOS event.</doc>
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_flush_start"
+                   c:identifier="gst_event_new_flush_start">
+        <doc xml:whitespace="preserve">Allocate a new flush start event. The flush start event can be sent
+upstream and downstream and travels out-of-bounds with the dataflow.
+It marks pads as being flushing and will make them return
+#GST_FLOW_WRONG_STATE when used for data flow with gst_pad_push(),
+gst_pad_chain(), gst_pad_alloc_buffer(), gst_pad_get_range() and
+gst_pad_pull_range(). Any event (except a #GST_EVENT_FLUSH_STOP) received
+on a flushing pad will return %FALSE immediately.
+Elements should unlock any blocking functions and exit their streaming
+functions as fast as possible when this event is received.
+This event is typically generated after a seek to flush out all queued data
+in the pipeline so that the new media is played as soon as possible.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new flush start event.</doc>
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_flush_stop"
+                   c:identifier="gst_event_new_flush_stop">
+        <doc xml:whitespace="preserve">Allocate a new flush stop event. The flush stop event can be sent
+upstream and downstream and travels serialized with the dataflow.
+It is typically sent after sending a FLUSH_START event to make the
+pads accept data again.
+Elements can process this event synchronized with the dataflow since
+the preceeding FLUSH_START event stopped the dataflow.
+This event is typically generated to complete a seek and to resume
+dataflow.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new flush stop event.</doc>
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_latency"
+                   c:identifier="gst_event_new_latency"
+                   version="0.10.12">
+        <doc xml:whitespace="preserve">Create a new latency event. The event is sent upstream from the sinks and
+notifies elements that they should add an additional @latency to the
+running time before synchronising against the clock.
+The latency is mostly used in live sinks and is always expressed in
+the time format.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstEvent</doc>
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="latency" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new latency value</doc>
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_navigation"
+                   c:identifier="gst_event_new_navigation">
+        <doc xml:whitespace="preserve">Create a new navigation event from the given description.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstEvent</doc>
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="structure" transfer-ownership="full">
+            <doc xml:whitespace="preserve">description of the event. The event will take ownership of the structure.</doc>
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_new_segment"
+                   c:identifier="gst_event_new_new_segment">
+        <doc xml:whitespace="preserve">Allocate a new newsegment event with the given format/values tripplets
+This method calls gst_event_new_new_segment_full() passing a default
+value of 1.0 for applied_rate</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new newsegment event.</doc>
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="update" transfer-ownership="none">
+            <doc xml:whitespace="preserve">is this segment an update to a previous one</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="rate" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a new rate for playback</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The format of the segment values</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the start value of the segment</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the stop value of the segment</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">stream position</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_new_segment_full"
+                   c:identifier="gst_event_new_new_segment_full"
+                   version="0.10.6">
+        <doc xml:whitespace="preserve">Allocate a new newsegment event with the given format/values triplets.
+The newsegment event marks the range of buffers to be processed. All
+data not within the segment range is not to be processed. This can be
+used intelligently by plugins to apply more efficient methods of skipping
+unneeded data. The valid range is expressed with the @start and @stop
+values.
+The position value of the segment is used in conjunction with the start
+value to convert the buffer timestamps into the stream time. This is 
+usually done in sinks to report the current stream_time. 
+is a valid @stop given, it must be greater or equal the @start, including 
+when the indicated playback @rate is &lt; 0.
+The @applied_rate value provides information about any rate adjustment that
+has already been made to the timestamps and content on the buffers of the 
+stream. (@rate * @applied_rate) should always equal the rate that has been 
+requested for playback. For example, if an element has an input segment 
+with intended playback @rate of 2.0 and applied_rate of 1.0, it can adjust 
+incoming timestamps and buffer content by half and output a newsegment event 
+with @rate of 1.0 and @applied_rate of 2.0
+After a newsegment event, the buffer stream time is calculated with:
+position + (TIMESTAMP(buf) - start) * ABS (rate * applied_rate)</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new newsegment event.</doc>
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="update" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Whether this segment is an update to a previous one</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="rate" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A new rate for playback</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="applied_rate" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The rate factor which has already been applied</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The format of the segment values</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The start value of the segment</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The stop value of the segment</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">stream position</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_qos" c:identifier="gst_event_new_qos">
+        <doc xml:whitespace="preserve">Allocate a new qos event with the given values. This function calls
+gst_event_new_qos_full() with the type set to #GST_QOS_TYPE_OVERFLOW
+when diff is negative (buffers are in time) and #GST_QOS_TYPE_UNDERFLOW
+when @diff is positive (buffers are late).</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new QOS event.</doc>
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="proportion" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the proportion of the qos message</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="diff" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The time difference of the last Clock sync</doc>
+            <type name="ClockTimeDiff" c:type="GstClockTimeDiff"/>
+          </parameter>
+          <parameter name="timestamp" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The timestamp of the buffer</doc>
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_qos_full"
+                   c:identifier="gst_event_new_qos_full"
+                   version="0.10.33">
+        <doc xml:whitespace="preserve">Allocate a new qos event with the given values.
+The QOS event is generated in an element that wants an upstream
+element to either reduce or increase its rate because of
+high/low CPU load or other resource usage such as network performance or
+throttling. Typically sinks generate these events for each buffer
+they receive.
+used when a buffer arrived in time or when the sink cannot keep up with
+the upstream datarate. #GST_QOS_TYPE_UNDERFLOW is when the sink is not
+receiving buffers fast enough and thus has to drop late buffers. 
+#GST_QOS_TYPE_THROTTLE is used when the datarate is artificially limited
+by the application, for example to reduce power consumption.
+element that generated the QoS event (usually the sink). The value is
+generally computed based on more long term statistics about the streams
+timestamps compared to the clock.
+A value &lt; 1.0 indicates that the upstream element is producing data faster
+than real-time. A value &gt; 1.0 indicates that the upstream element is not
+producing data fast enough. 1.0 is the ideal @proportion value. The
+proportion value can safely be used to lower or increase the quality of
+the element.
+buffer that caused the element to generate the QOS event. A negative value
+means that the buffer with @timestamp arrived in time. A positive value
+indicates how late the buffer with @timestamp was. When throttling is
+enabled, @diff will be set to the requested throttling interval.
+to generate the QOS event. It is expressed in running time and thus an ever
+increasing value.
+The upstream element can use the @diff and @timestamp values to decide
+whether to process more buffers. For possitive @diff, all buffers with
+timestamp &lt;= @timestamp + @diff will certainly arrive late in the sink
+as well. A (negative) @diff value so that @timestamp + @diff would yield a
+result smaller than 0 is not allowed.
+The application can use general event probes to intercept the QoS
+event and implement custom application specific QoS handling.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new QOS event.</doc>
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the QoS type</doc>
+            <type name="QOSType" c:type="GstQOSType"/>
+          </parameter>
+          <parameter name="proportion" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the proportion of the qos message</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="diff" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The time difference of the last Clock sync</doc>
+            <type name="ClockTimeDiff" c:type="GstClockTimeDiff"/>
+          </parameter>
+          <parameter name="timestamp" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The timestamp of the buffer</doc>
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_seek" c:identifier="gst_event_new_seek">
+        <doc xml:whitespace="preserve">Allocate a new seek event with the given parameters.
+The seek event configures playback of the pipeline between @start to @stop
+at the speed given in @rate, also called a playback segment.
+The @start and @stop values are expressed in @format.
+A @rate of 1.0 means normal playback rate, 2.0 means double speed.
+Negatives values means backwards playback. A value of 0.0 for the
+rate is not allowed and should be accomplished instead by PAUSING the
+pipeline.
+A pipeline has a default playback segment configured with a start
+position of 0, a stop position of -1 and a rate of 1.0. The currently
+configured playback segment can be queried with #GST_QUERY_SEGMENT. 
+start and stop fields in playback segment. Adjustments can be made relative
+or absolute to the last configured values. A type of #GST_SEEK_TYPE_NONE
+means that the position should not be updated.
+When the rate is positive and @start has been updated, playback will start
+from the newly configured start position. 
+For negative rates, playback will start from the newly configured stop
+position (if any). If the stop position if updated, it must be different from
+-1 for negative rates.
+It is not possible to seek relative to the current playback position, to do
+this, PAUSE the pipeline, query the current playback position with
+#GST_QUERY_POSITION and update the playback segment current position with a
+#GST_SEEK_TYPE_SET to the desired position.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new seek event.</doc>
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="rate" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The new playback rate</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The format of the seek values</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The optional seek flags</doc>
+            <type name="SeekFlags" c:type="GstSeekFlags"/>
+          </parameter>
+          <parameter name="start_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The type and flags for the new start position</doc>
+            <type name="SeekType" c:type="GstSeekType"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The value of the new start position</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The type and flags for the new stop position</doc>
+            <type name="SeekType" c:type="GstSeekType"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The value of the new stop position</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_sink_message"
+                   c:identifier="gst_event_new_sink_message"
+                   version="0.10.26">
+        <doc xml:whitespace="preserve">Create a new sink-message event. The purpose of the sink-message event is
+to instruct a sink to post the message contained in the event synchronized
+with the stream.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstEvent</doc>
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="msg" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstMessage to be posted</doc>
+            <type name="Message" c:type="GstMessage*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_step"
+                   c:identifier="gst_event_new_step"
+                   version="0.10.24">
+        <doc xml:whitespace="preserve">Create a new step event. The purpose of the step event is to instruct a sink
+to skip @amount (expressed in @format) of media. It can be used to implement
+stepping through the video frame by frame or for doing fast trick modes.
+A rate of &lt;= 0.0 is not allowed, pause the pipeline or reverse the playback
+direction of the pipeline to get the same effect.
+The @flush flag will clear any pending data in the pipeline before starting
+the step operation.
+The @intermediate flag instructs the pipeline that this step operation is
+part of a larger step operation.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstEvent</doc>
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the format of @amount</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="amount" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the amount of data to step</doc>
+            <type name="guint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="rate" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the step rate</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="flush" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flushing steps</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="intermediate" transfer-ownership="none">
+            <doc xml:whitespace="preserve">intermediate steps</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_tag" c:identifier="gst_event_new_tag">
+        <doc xml:whitespace="preserve">Generates a metadata tag event from the given @taglist.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstEvent</doc>
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="taglist" transfer-ownership="full">
+            <doc xml:whitespace="preserve">metadata list. The event will take ownership of the taglist.</doc>
+            <type name="TagList" c:type="GstTagList*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="type_get_flags" c:identifier="gst_event_type_get_flags">
+        <doc xml:whitespace="preserve">Gets the #GstEventTypeFlags associated with @type.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GstEventTypeFlags.</doc>
+          <type name="EventTypeFlags" c:type="GstEventTypeFlags"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstEventType</doc>
+            <type name="EventType" c:type="GstEventType"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="type_get_name" c:identifier="gst_event_type_get_name">
+        <doc xml:whitespace="preserve">Get a printable name for the given event type. Do not modify or free.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a reference to the static name of the event.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the event type</doc>
+            <type name="EventType" c:type="GstEventType"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="type_to_quark" c:identifier="gst_event_type_to_quark">
+        <doc xml:whitespace="preserve">Get the unique quark for the given event type.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the quark associated with the event type</doc>
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the event type</doc>
+            <type name="EventType" c:type="GstEventType"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_seqnum"
+              c:identifier="gst_event_get_seqnum"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Retrieve the sequence number of a event.
+Events have ever-incrementing sequence numbers, which may also be set
+explicitly via gst_event_set_seqnum(). Sequence numbers are typically used to
+indicate that a event corresponds to some other set of events or messages,
+for example an EOS event corresponding to a SEEK event. It is considered good
+practice to make this correspondence when possible, though it is not
+required.
+Note that events and messages share the same sequence number incrementor;
+two events or messages will never not have the same sequence number unless
+that correspondence was made explicitly.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The event's sequence number.</doc>
+          <type name="guint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="get_structure" c:identifier="gst_event_get_structure">
+        <doc xml:whitespace="preserve">Access the structure of the event.
+owned by the event, which means that you should not free it and
+that the pointer becomes invalid when you free the event.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The structure of the event. The structure is still</doc>
+          <type name="Structure" c:type="GstStructure*"/>
+        </return-value>
+      </method>
+      <method name="has_name"
+              c:identifier="gst_event_has_name"
+              version="0.10.20">
+        <doc xml:whitespace="preserve">Checks if @event has the given @name. This function is usually used to
+check the name of a custom event.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @name matches the name of the event structure.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name to check</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_buffer_size"
+              c:identifier="gst_event_parse_buffer_size">
+        <doc xml:whitespace="preserve">Get the format, minsize, maxsize and async-flag in the buffersize event.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">A pointer to store the format in</doc>
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="minsize"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">A pointer to store the minsize in</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="maxsize"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">A pointer to store the maxsize in</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="async"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">A pointer to store the async-flag in</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_latency"
+              c:identifier="gst_event_parse_latency"
+              version="0.10.12">
+        <doc xml:whitespace="preserve">Get the latency in the latency event.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="latency"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">A pointer to store the latency in.</doc>
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_new_segment"
+              c:identifier="gst_event_parse_new_segment">
+        <doc xml:whitespace="preserve">Get the update flag, rate, format, start, stop and position in the 
+newsegment event. In general, gst_event_parse_new_segment_full() should
+be used instead of this, to also retrieve the applied_rate value of the
+segment. See gst_event_new_new_segment_full() for a full description 
+of the newsegment event.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="update"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">A pointer to the update flag of the segment</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="rate"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">A pointer to the rate of the segment</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="format"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">A pointer to the format of the newsegment values</doc>
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="start"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">A pointer to store the start value in</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="stop"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">A pointer to store the stop value in</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="position"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">A pointer to store the stream time in</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_new_segment_full"
+              c:identifier="gst_event_parse_new_segment_full"
+              version="0.10.6">
+        <doc xml:whitespace="preserve">Get the update, rate, applied_rate, format, start, stop and 
+position in the newsegment event. See gst_event_new_new_segment_full() 
+for a full description of the newsegment event.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="update"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">A pointer to the update flag of the segment</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="rate"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">A pointer to the rate of the segment</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="applied_rate"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">A pointer to the applied_rate of the segment</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="format"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">A pointer to the format of the newsegment values</doc>
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="start"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">A pointer to store the start value in</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="stop"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">A pointer to store the stop value in</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="position"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">A pointer to store the stream time in</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_qos" c:identifier="gst_event_parse_qos">
+        <doc xml:whitespace="preserve">Get the proportion, diff and timestamp in the qos event. See
+gst_event_new_qos() for more information about the different QoS values.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="proportion"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">A pointer to store the proportion in</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="diff"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">A pointer to store the diff in</doc>
+            <type name="ClockTimeDiff" c:type="GstClockTimeDiff*"/>
+          </parameter>
+          <parameter name="timestamp"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">A pointer to store the timestamp in</doc>
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_qos_full"
+              c:identifier="gst_event_parse_qos_full"
+              version="0.10.33">
+        <doc xml:whitespace="preserve">Get the type, proportion, diff and timestamp in the qos event. See
+gst_event_new_qos_full() for more information about the different QoS values.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">A pointer to store the QoS type in</doc>
+            <type name="QOSType" c:type="GstQOSType*"/>
+          </parameter>
+          <parameter name="proportion"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">A pointer to store the proportion in</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="diff"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">A pointer to store the diff in</doc>
+            <type name="ClockTimeDiff" c:type="GstClockTimeDiff*"/>
+          </parameter>
+          <parameter name="timestamp"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">A pointer to store the timestamp in</doc>
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_seek" c:identifier="gst_event_parse_seek">
+        <doc xml:whitespace="preserve">Parses a seek @event and stores the results in the given result locations.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rate"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">result location for the rate</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="format"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">result location for the stream format</doc>
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="flags"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">result location for the #GstSeekFlags</doc>
+            <type name="SeekFlags" c:type="GstSeekFlags*"/>
+          </parameter>
+          <parameter name="start_type"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">result location for the #GstSeekType of the start position</doc>
+            <type name="SeekType" c:type="GstSeekType*"/>
+          </parameter>
+          <parameter name="start"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">result location for the start postion expressed in @format</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="stop_type"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">result location for the #GstSeekType of the stop position</doc>
+            <type name="SeekType" c:type="GstSeekType*"/>
+          </parameter>
+          <parameter name="stop"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">result location for the stop postion expressed in @format</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_sink_message"
+              c:identifier="gst_event_parse_sink_message"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Parse the sink-message event. Unref @msg after usage.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msg"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">a pointer to store the #GstMessage in.</doc>
+            <type name="Message" c:type="GstMessage**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_step"
+              c:identifier="gst_event_parse_step"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Parse the step event.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a pointer to store the format in</doc>
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="amount"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a pointer to store the amount in</doc>
+            <type name="guint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="rate"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a pointer to store the rate in</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="flush"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a pointer to store the flush boolean in</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="intermediate"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a pointer to store the intermediate boolean in</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_tag" c:identifier="gst_event_parse_tag">
+        <doc xml:whitespace="preserve">Parses a tag @event and stores the results in the given @taglist location.
+No reference to the taglist will be returned, it remains valid only until
+the @event is freed. Don't modify or free the taglist, make a copy if you
+want to modify it or store it for later use.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="taglist"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">pointer to metadata list</doc>
+            <type name="TagList" c:type="GstTagList**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_seqnum"
+              c:identifier="gst_event_set_seqnum"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Set the sequence number of a event.
+This function might be called by the creator of a event to indicate that the
+event relates to other events or messages. See gst_event_get_seqnum() for
+more information.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="seqnum" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A sequence number.</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="mini_object">
+        <type name="MiniObject" c:type="GstMiniObject"/>
+      </field>
+      <field name="type">
+        <type name="EventType" c:type="GstEventType"/>
+      </field>
+      <field name="timestamp">
+        <type name="guint64" c:type="guint64"/>
+      </field>
+      <field name="src">
+        <type name="Object" c:type="GstObject*"/>
+      </field>
+      <field name="structure">
+        <type name="Structure" c:type="GstStructure*"/>
+      </field>
+      <union name="abidata" c:type="abidata">
+        <field name="seqnum" writable="1">
+          <type name="guint32" c:type="guint32"/>
+        </field>
+        <field name="_gst_reserved" writable="1">
+          <type name="gpointer" c:type="gpointer"/>
+        </field>
+      </union>
+    </class>
+    <record name="EventClass"
+            c:type="GstEventClass"
+            glib:is-gtype-struct-for="Event">
+      <field name="mini_object_class">
+        <type name="MiniObjectClass" c:type="GstMiniObjectClass"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="EventType" c:type="GstEventType">
+      <doc xml:whitespace="preserve">#GstEventType lists the standard event types that can be sent in a pipeline.
+The custom event types can be used for private messages between elements
+that can't be expressed using normal
+GStreamer buffer passing semantics. Custom events carry an arbitrary
+#GstStructure.
+Specific custom events are distinguished by the name of the structure.</doc>
+      <member name="unknown" value="0" c:identifier="GST_EVENT_UNKNOWN"/>
+      <member name="flush_start"
+              value="19"
+              c:identifier="GST_EVENT_FLUSH_START"/>
+      <member name="flush_stop"
+              value="39"
+              c:identifier="GST_EVENT_FLUSH_STOP"/>
+      <member name="eos" value="86" c:identifier="GST_EVENT_EOS"/>
+      <member name="newsegment"
+              value="102"
+              c:identifier="GST_EVENT_NEWSEGMENT"/>
+      <member name="tag" value="118" c:identifier="GST_EVENT_TAG"/>
+      <member name="buffersize"
+              value="134"
+              c:identifier="GST_EVENT_BUFFERSIZE"/>
+      <member name="sink_message"
+              value="150"
+              c:identifier="GST_EVENT_SINK_MESSAGE"/>
+      <member name="qos" value="241" c:identifier="GST_EVENT_QOS"/>
+      <member name="seek" value="257" c:identifier="GST_EVENT_SEEK"/>
+      <member name="navigation"
+              value="273"
+              c:identifier="GST_EVENT_NAVIGATION"/>
+      <member name="latency" value="289" c:identifier="GST_EVENT_LATENCY"/>
+      <member name="step" value="305" c:identifier="GST_EVENT_STEP"/>
+      <member name="custom_upstream"
+              value="513"
+              c:identifier="GST_EVENT_CUSTOM_UPSTREAM"/>
+      <member name="custom_downstream"
+              value="518"
+              c:identifier="GST_EVENT_CUSTOM_DOWNSTREAM"/>
+      <member name="custom_downstream_oob"
+              value="514"
+              c:identifier="GST_EVENT_CUSTOM_DOWNSTREAM_OOB"/>
+      <member name="custom_both"
+              value="519"
+              c:identifier="GST_EVENT_CUSTOM_BOTH"/>
+      <member name="custom_both_oob"
+              value="515"
+              c:identifier="GST_EVENT_CUSTOM_BOTH_OOB"/>
+    </bitfield>
+    <bitfield name="EventTypeFlags" c:type="GstEventTypeFlags">
+      <doc xml:whitespace="preserve">#GstEventTypeFlags indicate the aspects of the different #GstEventType
+values. You can get the type flags of a #GstEventType with the
+gst_event_type_get_flags() function.</doc>
+      <member name="upstream"
+              value="1"
+              c:identifier="GST_EVENT_TYPE_UPSTREAM"/>
+      <member name="downstream"
+              value="2"
+              c:identifier="GST_EVENT_TYPE_DOWNSTREAM"/>
+      <member name="serialized"
+              value="4"
+              c:identifier="GST_EVENT_TYPE_SERIALIZED"/>
+    </bitfield>
+    <constant name="FOURCC_FORMAT" value="c%c%c%c">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <callback name="FilterFunc" c:type="GstFilterFunc">
+      <doc xml:whitespace="preserve">Function prototype for a filter callback that can be use in gst_filter_run().
+The function should apply its filtering to @obj. Additional data passed to
+gst_filter_run() are in @data.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE for success.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="obj" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the object</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <doc xml:whitespace="preserve">filter data</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="FlowReturn" c:type="GstFlowReturn">
+      <doc xml:whitespace="preserve">sent yet) (unused/unimplemented).
+this error should post an error message with more
+details.
+this (and higher) to define custom success
+codes. Since 0.10.7.
+custom success code to this to avoid compiler
+warnings). Since 0.10.29.
+this (and lower) to define custom error codes.
+Since 0.10.7.
+custom error code to this to avoid compiler
+warnings). Since 0.10.29.
+The result of passing data to a pad.
+Note that the custom return values should not be exposed outside of the
+element scope and are available since 0.10.7.</doc>
+      <member name="custom_success_2"
+              value="102"
+              c:identifier="GST_FLOW_CUSTOM_SUCCESS_2"/>
+      <member name="custom_success_1"
+              value="101"
+              c:identifier="GST_FLOW_CUSTOM_SUCCESS_1"/>
+      <member name="custom_success"
+              value="100"
+              c:identifier="GST_FLOW_CUSTOM_SUCCESS"/>
+      <member name="resend" value="1" c:identifier="GST_FLOW_RESEND"/>
+      <member name="ok" value="0" c:identifier="GST_FLOW_OK"/>
+      <member name="not_linked" value="-1" c:identifier="GST_FLOW_NOT_LINKED"/>
+      <member name="wrong_state"
+              value="-2"
+              c:identifier="GST_FLOW_WRONG_STATE"/>
+      <member name="unexpected" value="-3" c:identifier="GST_FLOW_UNEXPECTED"/>
+      <member name="not_negotiated"
+              value="-4"
+              c:identifier="GST_FLOW_NOT_NEGOTIATED"/>
+      <member name="error" value="-5" c:identifier="GST_FLOW_ERROR"/>
+      <member name="not_supported"
+              value="-6"
+              c:identifier="GST_FLOW_NOT_SUPPORTED"/>
+      <member name="custom_error"
+              value="-100"
+              c:identifier="GST_FLOW_CUSTOM_ERROR"/>
+      <member name="custom_error_1"
+              value="-101"
+              c:identifier="GST_FLOW_CUSTOM_ERROR_1"/>
+      <member name="custom_error_2"
+              value="-102"
+              c:identifier="GST_FLOW_CUSTOM_ERROR_2"/>
+    </enumeration>
+    <enumeration name="Format" c:type="GstFormat">
+      <doc xml:whitespace="preserve">Standard predefined formats</doc>
+      <member name="undefined" value="0" c:identifier="GST_FORMAT_UNDEFINED"/>
+      <member name="default" value="1" c:identifier="GST_FORMAT_DEFAULT"/>
+      <member name="bytes" value="2" c:identifier="GST_FORMAT_BYTES"/>
+      <member name="time" value="3" c:identifier="GST_FORMAT_TIME"/>
+      <member name="buffers" value="4" c:identifier="GST_FORMAT_BUFFERS"/>
+      <member name="percent" value="5" c:identifier="GST_FORMAT_PERCENT"/>
+    </enumeration>
+    <record name="FormatDefinition" c:type="GstFormatDefinition">
+      <doc xml:whitespace="preserve">A format definition</doc>
+      <field name="value" writable="1">
+        <type name="Format" c:type="GstFormat"/>
+      </field>
+      <field name="nick" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="description" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="quark" writable="1">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </field>
+    </record>
+    <class name="GhostPad"
+           c:symbol-prefix="ghost_pad"
+           c:type="GstGhostPad"
+           parent="ProxyPad"
+           glib:type-name="GstGhostPad"
+           glib:get-type="gst_ghost_pad_get_type"
+           glib:type-struct="GhostPadClass">
+      <doc xml:whitespace="preserve">GhostPads are useful when organizing pipelines with #GstBin like elements.
+The idea here is to create hierarchical element graphs. The bin element
+contains a sub-graph. Now one would like to treat the bin-element like any
+other #GstElement. This is where GhostPads come into play. A GhostPad acts as
+a proxy for another pad. Thus the bin can have sink and source ghost-pads
+that are associated with sink and source pads of the child elements.
+If the target pad is known at creation time, gst_ghost_pad_new() is the
+function to use to get a ghost-pad. Otherwise one can use gst_ghost_pad_new_no_target()
+to create the ghost-pad and use gst_ghost_pad_set_target() to establish the
+association later on.
+Note that GhostPads add overhead to the data processing of a pipeline.
+Last reviewed on 2005-11-18 (0.9.5)</doc>
+      <constructor name="new" c:identifier="gst_ghost_pad_new">
+        <doc xml:whitespace="preserve">Create a new ghostpad with @target as the target. The direction will be taken
+from the target pad. @target must be unlinked.
+Will ref the target.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstPad, or NULL in case of an error.</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the name of the new pad, or NULL to assign a default name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="target" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the pad to ghost.</doc>
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_template"
+                   c:identifier="gst_ghost_pad_new_from_template"
+                   version="0.10.10">
+        <doc xml:whitespace="preserve">Create a new ghostpad with @target as the target. The direction will be taken
+from the target pad. The template used on the ghostpad will be @template.
+Will ref the target.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstPad, or NULL in case of an error.</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the name of the new pad, or NULL to assign a default name.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="target" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the pad to ghost.</doc>
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+          <parameter name="templ" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstPadTemplate to use on the ghostpad.</doc>
+            <type name="PadTemplate" c:type="GstPadTemplate*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_no_target"
+                   c:identifier="gst_ghost_pad_new_no_target">
+        <doc xml:whitespace="preserve">Create a new ghostpad without a target with the given direction.
+A target can be set on the ghostpad later with the
+gst_ghost_pad_set_target() function.
+The created ghostpad will not have a padtemplate.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstPad, or NULL in case of an error.</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the name of the new pad, or NULL to assign a default name.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="dir" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the direction of the ghostpad</doc>
+            <type name="PadDirection" c:type="GstPadDirection"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_no_target_from_template"
+                   c:identifier="gst_ghost_pad_new_no_target_from_template"
+                   version="0.10.10">
+        <doc xml:whitespace="preserve">Create a new ghostpad based on @templ, without setting a target. The
+direction will be taken from the @templ.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstPad, or NULL in case of an error.</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the name of the new pad, or NULL to assign a default name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="templ" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstPadTemplate to create the ghostpad from.</doc>
+            <type name="PadTemplate" c:type="GstPadTemplate*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="construct"
+              c:identifier="gst_ghost_pad_construct"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Finish initialization of a newly allocated ghost pad.
+This function is most useful in language bindings and when subclassing
+#GstGhostPad; plugin and application developers normally will not call this
+function. Call this function directly after a call to g_object_new
+(GST_TYPE_GHOST_PAD, "direction", @dir, ..., NULL).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the construction succeeds, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_target" c:identifier="gst_ghost_pad_get_target">
+        <doc xml:whitespace="preserve">Get the target pad of @gpad. Unref target pad after usage.
+has no target set. Unref target pad after usage.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the target #GstPad, can be NULL if the ghostpad</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+      </method>
+      <method name="set_target" c:identifier="gst_ghost_pad_set_target">
+        <doc xml:whitespace="preserve">Set the new target of the ghostpad @gpad. Any existing target
+is unlinked and links to the new target are established. if @newtarget is
+NULL the target will be cleared.
+can return FALSE when the internal pads could not be linked.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">TRUE if the new target could be set. This function</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="newtarget" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">the new pad target</doc>
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="pad">
+        <type name="ProxyPad" c:type="GstProxyPad"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="GhostPadPrivate" c:type="GstGhostPadPrivate*"/>
+      </field>
+    </class>
+    <record name="GhostPadClass"
+            c:type="GstGhostPadClass"
+            glib:is-gtype-struct-for="GhostPad">
+      <field name="parent_class">
+        <type name="ProxyPadClass" c:type="GstProxyPadClass"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <record name="GhostPadPrivate" c:type="GstGhostPadPrivate" disguised="1">
+    </record>
+    <constant name="INDEX_ID_INVALID" value="-1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <interface name="ImplementsInterface"
+               c:symbol-prefix="implements_interface"
+               c:type="GstImplementsInterface"
+               glib:type-name="GstImplementsInterface"
+               glib:get-type="gst_implements_interface_get_type">
+      <doc xml:whitespace="preserve">Provides interface functionality on per instance basis and not per class
+basis, which is the case for gobject.</doc>
+      <prerequisite name="Element"/>
+    </interface>
+    <record name="ImplementsInterfaceClass"
+            c:type="GstImplementsInterfaceClass">
+      <field name="parent" writable="1">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="supported">
+        <callback name="supported">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="iface" transfer-ownership="none">
+              <type name="ImplementsInterface"
+                    c:type="GstImplementsInterface*"/>
+            </parameter>
+            <parameter name="iface_type" transfer-ownership="none">
+              <type name="GType" c:type="GType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <class name="Index"
+           c:symbol-prefix="index"
+           c:type="GstIndex"
+           parent="Object"
+           glib:type-name="GstIndex"
+           glib:get-type="gst_index_get_type"
+           glib:type-struct="IndexClass">
+      <doc xml:whitespace="preserve">GstIndex is used to generate a stream index of one or more elements
+in a pipeline.
+Elements will overload the set_index and get_index virtual methods in
+#GstElement. When streaming data, the element will add index entries if it
+has an index set.
+Each element that adds to the index will do that using a writer_id. The
+writer_id is obtained from gst_index_get_writer_id().
+The application that wants to index the stream will create a new index object
+using gst_index_new() or gst_index_factory_make(). The index is assigned to a
+specific element, a bin or the whole pipeline. This will cause indexable
+elements to add entires to the index while playing.</doc>
+      <constructor name="new" c:identifier="gst_index_new">
+        <doc xml:whitespace="preserve">Create a new dummy index object. Use gst_element_set_index() to assign that
+to an element or pipeline. This index is not storing anything, but will
+still emit e.g. the #GstIndex::entry-added signal.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new index object</doc>
+          <type name="Index" c:type="GstIndex*"/>
+        </return-value>
+      </constructor>
+      <virtual-method name="add_entry">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="entry" transfer-ownership="none">
+            <type name="IndexEntry" c:type="GstIndexEntry*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="commit" invoker="commit">
+        <doc xml:whitespace="preserve">Tell the index that the writer with the given id is done
+with this index and is not going to write any more entries
+to it.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the writer that commited the index</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="entry_added">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="entry" transfer-ownership="none">
+            <type name="IndexEntry" c:type="GstIndexEntry*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_assoc_entry" introspectable="0">
+        <return-value transfer-ownership="full">
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="method" transfer-ownership="none">
+            <type name="IndexLookupMethod" c:type="GstIndexLookupMethod"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="AssocFlags" c:type="GstAssocFlags"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="func" transfer-ownership="none" closure="6">
+            <type name="GLib.CompareDataFunc" c:type="GCompareDataFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="6">
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_writer_id" invoker="get_writer_id">
+        <doc xml:whitespace="preserve">Before entries can be added to the index, a writer
+should obtain a unique id. The methods to add new entries
+to the index require this id as an argument.
+The application can implement a custom function to map the writer object
+to a string. That string will be used to register or look up an id
+in the index.
+&lt;note&gt;
+The caller must not hold @writer's #GST_OBJECT_LOCK, as the default
+resolver may call functions that take the object lock as well, and
+the lock is not recursive.
+&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the writer would be mapped to an id.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="writer_id" transfer-ownership="none">
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="writer_string" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="add_association"
+              c:identifier="gst_index_add_association"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Associate given format/value pairs with each other.
+Be sure to pass gint64 values to this functions varargs,
+you might want to use a gint64 cast to be sure.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a pointer to the newly added entry in the index.</doc>
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the id of the index writer</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">optinal flags for this entry</doc>
+            <type name="AssocFlags" c:type="GstAssocFlags"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the format of the value</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_associationv"
+              c:identifier="gst_index_add_associationv">
+        <doc xml:whitespace="preserve">Associate given format/value pairs with each other.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a pointer to the newly added entry in the index.</doc>
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the id of the index writer</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">optinal flags for this entry</doc>
+            <type name="AssocFlags" c:type="GstAssocFlags"/>
+          </parameter>
+          <parameter name="n" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of associations</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="list" transfer-ownership="none">
+            <doc xml:whitespace="preserve">list of associations</doc>
+            <type name="IndexAssociation" c:type="GstIndexAssociation*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_format" c:identifier="gst_index_add_format">
+        <doc xml:whitespace="preserve">Adds a format entry into the index. This function is
+used to map dynamic GstFormat ids to their original
+format key.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a pointer to the newly added entry in the index.</doc>
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the id of the index writer</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the format to add to the index</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_id" c:identifier="gst_index_add_id">
+        <doc xml:whitespace="preserve">Add an id entry into the index.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a pointer to the newly added entry in the index.</doc>
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the id of the index writer</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="description" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the description of the index writer</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_object" c:identifier="gst_index_add_object">
+        <doc xml:whitespace="preserve">Add the given object to the index with the given key.
+This function is not yet implemented.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a pointer to the newly added entry in the index.</doc>
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the id of the index writer</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a key for the object</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the GType of the object</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to the object to add</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="commit" c:identifier="gst_index_commit">
+        <doc xml:whitespace="preserve">Tell the index that the writer with the given id is done
+with this index and is not going to write any more entries
+to it.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the writer that commited the index</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_assoc_entry" c:identifier="gst_index_get_assoc_entry">
+        <doc xml:whitespace="preserve">Finds the given format/value in the index
+value was not found.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the entry associated with the value or NULL if the</doc>
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the id of the index writer</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="method" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The lookup method to use</doc>
+            <type name="IndexLookupMethod" c:type="GstIndexLookupMethod"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Flags for the entry</doc>
+            <type name="AssocFlags" c:type="GstAssocFlags"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the format of the value</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value to find</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_assoc_entry_full"
+              c:identifier="gst_index_get_assoc_entry_full"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Finds the given format/value in the index with the given
+compare function and user_data.
+value was not found.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the entry associated with the value or NULL if the</doc>
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the id of the index writer</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="method" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The lookup method to use</doc>
+            <type name="IndexLookupMethod" c:type="GstIndexLookupMethod"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Flags for the entry</doc>
+            <type name="AssocFlags" c:type="GstAssocFlags"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the format of the value</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value to find</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="func" transfer-ownership="none" closure="6">
+            <doc xml:whitespace="preserve">the function used to compare entries</doc>
+            <type name="GLib.CompareDataFunc" c:type="GCompareDataFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data passed to the compare function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_certainty" c:identifier="gst_index_get_certainty">
+        <doc xml:whitespace="preserve">Get the certainty of the given index.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the certainty of the index.</doc>
+          <type name="IndexCertainty" c:type="GstIndexCertainty"/>
+        </return-value>
+      </method>
+      <method name="get_group" c:identifier="gst_index_get_group">
+        <doc xml:whitespace="preserve">Get the id of the current group.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the id of the current group.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_writer_id" c:identifier="gst_index_get_writer_id">
+        <doc xml:whitespace="preserve">Before entries can be added to the index, a writer
+should obtain a unique id. The methods to add new entries
+to the index require this id as an argument.
+The application can implement a custom function to map the writer object
+to a string. That string will be used to register or look up an id
+in the index.
+&lt;note&gt;
+The caller must not hold @writer's #GST_OBJECT_LOCK, as the default
+resolver may call functions that take the object lock as well, and
+the lock is not recursive.
+&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the writer would be mapped to an id.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="writer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the GstObject to allocate an id for</doc>
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to a gint to hold the id</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="new_group" c:identifier="gst_index_new_group">
+        <doc xml:whitespace="preserve">Create a new group for the given index. It will be
+set as the current group.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the id of the newly created group.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_certainty" c:identifier="gst_index_set_certainty">
+        <doc xml:whitespace="preserve">Set the certainty of the given index.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="certainty" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the certainty to set</doc>
+            <type name="IndexCertainty" c:type="GstIndexCertainty"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_filter"
+              c:identifier="gst_index_set_filter"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Lets the app register a custom filter function so that
+it can select what entries should be stored in the index.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter" transfer-ownership="none" closure="1">
+            <doc xml:whitespace="preserve">the filter to register</doc>
+            <type name="IndexFilter" c:type="GstIndexFilter"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data passed to the filter function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_filter_full" c:identifier="gst_index_set_filter_full">
+        <doc xml:whitespace="preserve">Lets the app register a custom filter function so that
+it can select what entries should be stored in the index.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="1"
+                     destroy="2">
+            <doc xml:whitespace="preserve">the filter to register</doc>
+            <type name="IndexFilter" c:type="GstIndexFilter"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data passed to the filter function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="user_data_destroy"
+                     transfer-ownership="none"
+                     scope="async">
+            <doc xml:whitespace="preserve">function to call when @user_data is unset</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_group" c:identifier="gst_index_set_group">
+        <doc xml:whitespace="preserve">Set the current groupnumber to the given argument.
+did not exist.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the operation succeeded, FALSE if the group</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="groupnum" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the groupnumber to set</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_resolver"
+              c:identifier="gst_index_set_resolver"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Lets the app register a custom function to map index
+ids to writer descriptions.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="resolver" transfer-ownership="none" closure="1">
+            <doc xml:whitespace="preserve">the resolver to register</doc>
+            <type name="IndexResolver" c:type="GstIndexResolver"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data passed to the resolver function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_resolver_full"
+              c:identifier="gst_index_set_resolver_full"
+              version="0.10.18">
+        <doc xml:whitespace="preserve">Lets the app register a custom function to map index
+ids to writer descriptions.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="resolver"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="1"
+                     destroy="2">
+            <doc xml:whitespace="preserve">the resolver to register</doc>
+            <type name="IndexResolver" c:type="GstIndexResolver"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data passed to the resolver function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="user_data_destroy"
+                     transfer-ownership="none"
+                     scope="async">
+            <doc xml:whitespace="preserve">destroy function for @user_data</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="resolver"
+                introspectable="0"
+                writable="1"
+                transfer-ownership="none">
+        <type/>
+      </property>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="groups" readable="0" private="1">
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="curgroup" readable="0" private="1">
+        <type name="IndexGroup" c:type="GstIndexGroup*"/>
+      </field>
+      <field name="maxgroup" readable="0" private="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="method" readable="0" private="1">
+        <type name="IndexResolverMethod" c:type="GstIndexResolverMethod"/>
+      </field>
+      <field name="resolver" readable="0" private="1">
+        <type name="IndexResolver" c:type="GstIndexResolver"/>
+      </field>
+      <field name="resolver_user_data" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="filter" readable="0" private="1">
+        <type name="IndexFilter" c:type="GstIndexFilter"/>
+      </field>
+      <field name="filter_user_data" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="filter_user_data_destroy" readable="0" private="1">
+        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+      </field>
+      <field name="writers" readable="0" private="1">
+        <type name="GLib.HashTable" c:type="GHashTable*">
+          <type name="gpointer" c:type="gpointer"/>
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="last_id" readable="0" private="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="resolver_user_data_destroy" readable="0" private="1">
+        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+      <glib:signal name="entry-added">
+        <doc xml:whitespace="preserve">Is emitted when a new entry is added to the index.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="arg1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The entry added to the index.</doc>
+            <type name="IndexEntry"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="IndexAssociation" c:type="GstIndexAssociation">
+      <doc xml:whitespace="preserve">An association in an entry.</doc>
+      <field name="format" writable="1">
+        <type name="Format" c:type="GstFormat"/>
+      </field>
+      <field name="value" writable="1">
+        <type name="gint64" c:type="gint64"/>
+      </field>
+    </record>
+    <enumeration name="IndexCertainty" c:type="GstIndexCertainty">
+      <doc xml:whitespace="preserve">The certainty of a group in the index.</doc>
+      <member name="unknown" value="0" c:identifier="GST_INDEX_UNKNOWN"/>
+      <member name="certain" value="1" c:identifier="GST_INDEX_CERTAIN"/>
+      <member name="fuzzy" value="2" c:identifier="GST_INDEX_FUZZY"/>
+    </enumeration>
+    <record name="IndexClass"
+            c:type="GstIndexClass"
+            glib:is-gtype-struct-for="Index">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="get_writer_id">
+        <callback name="get_writer_id">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">TRUE if the writer would be mapped to an id.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="index" transfer-ownership="none">
+              <type name="Index" c:type="GstIndex*"/>
+            </parameter>
+            <parameter name="writer_id" transfer-ownership="none">
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+            <parameter name="writer_string" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="commit">
+        <callback name="commit">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="index" transfer-ownership="none">
+              <type name="Index" c:type="GstIndex*"/>
+            </parameter>
+            <parameter name="id" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the writer that commited the index</doc>
+              <type name="gint" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_entry">
+        <callback name="add_entry">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="index" transfer-ownership="none">
+              <type name="Index" c:type="GstIndex*"/>
+            </parameter>
+            <parameter name="entry" transfer-ownership="none">
+              <type name="IndexEntry" c:type="GstIndexEntry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_assoc_entry" introspectable="0">
+        <callback name="get_assoc_entry" introspectable="0">
+          <return-value transfer-ownership="full">
+            <type name="IndexEntry" c:type="GstIndexEntry*"/>
+          </return-value>
+          <parameters>
+            <parameter name="index" transfer-ownership="none">
+              <type name="Index" c:type="GstIndex*"/>
+            </parameter>
+            <parameter name="id" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="method" transfer-ownership="none">
+              <type name="IndexLookupMethod" c:type="GstIndexLookupMethod"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <type name="AssocFlags" c:type="GstAssocFlags"/>
+            </parameter>
+            <parameter name="format" transfer-ownership="none">
+              <type name="Format" c:type="GstFormat"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="gint64" c:type="gint64"/>
+            </parameter>
+            <parameter name="func" transfer-ownership="none" closure="7">
+              <type name="GLib.CompareDataFunc" c:type="GCompareDataFunc"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="7">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="entry_added">
+        <callback name="entry_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="index" transfer-ownership="none">
+              <type name="Index" c:type="GstIndex*"/>
+            </parameter>
+            <parameter name="entry" transfer-ownership="none">
+              <type name="IndexEntry" c:type="GstIndexEntry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <record name="IndexEntry"
+            c:type="GstIndexEntry"
+            glib:type-name="GstIndexEntry"
+            glib:get-type="gst_index_entry_get_type"
+            c:symbol-prefix="index_entry">
+      <doc xml:whitespace="preserve">The basic element of an index.</doc>
+      <field name="type" readable="0" private="1">
+        <type name="IndexEntryType" c:type="GstIndexEntryType"/>
+      </field>
+      <field name="id" readable="0" private="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <union name="data" c:type="data">
+        <record name="id" c:type="id">
+          <field name="description" writable="1">
+            <type name="utf8" c:type="gchar*"/>
+          </field>
+        </record>
+        <record name="assoc" c:type="assoc">
+          <field name="nassocs" writable="1">
+            <type name="gint" c:type="gint"/>
+          </field>
+          <field name="assocs" writable="1">
+            <type name="IndexAssociation" c:type="GstIndexAssociation*"/>
+          </field>
+          <field name="flags" writable="1">
+            <type name="AssocFlags" c:type="GstAssocFlags"/>
+          </field>
+        </record>
+        <record name="object" c:type="object">
+          <field name="key" writable="1">
+            <type name="utf8" c:type="gchar*"/>
+          </field>
+          <field name="type" writable="1">
+            <type name="GType" c:type="GType"/>
+          </field>
+          <field name="object" writable="1">
+            <type name="gpointer" c:type="gpointer"/>
+          </field>
+        </record>
+        <record name="format" c:type="format">
+          <field name="format" writable="1">
+            <type name="Format" c:type="GstFormat"/>
+          </field>
+          <field name="key" writable="1">
+            <type name="utf8" c:type="gchar*"/>
+          </field>
+        </record>
+      </union>
+      <method name="assoc_map" c:identifier="gst_index_entry_assoc_map">
+        <doc xml:whitespace="preserve">Gets alternative formats associated with the indexentry.
+format.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if there was a value associated with the given</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the format of the value the find</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to store the value</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy" c:identifier="gst_index_entry_copy">
+        <doc xml:whitespace="preserve">Copies an entry and returns the result.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated #GstIndexEntry.</doc>
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="gst_index_entry_free">
+        <doc xml:whitespace="preserve">Free the memory used by the given entry.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="IndexEntryType" c:type="GstIndexEntryType">
+      <doc xml:whitespace="preserve">The different types of entries in the index.</doc>
+      <member name="id" value="0" c:identifier="GST_INDEX_ENTRY_ID"/>
+      <member name="association"
+              value="1"
+              c:identifier="GST_INDEX_ENTRY_ASSOCIATION"/>
+      <member name="object" value="2" c:identifier="GST_INDEX_ENTRY_OBJECT"/>
+      <member name="format" value="3" c:identifier="GST_INDEX_ENTRY_FORMAT"/>
+    </enumeration>
+    <class name="IndexFactory"
+           c:symbol-prefix="index_factory"
+           c:type="GstIndexFactory"
+           parent="PluginFeature"
+           glib:type-name="GstIndexFactory"
+           glib:get-type="gst_index_factory_get_type"
+           glib:type-struct="IndexFactoryClass">
+      <doc xml:whitespace="preserve">GstIndexFactory is used to dynamically create GstIndex implementations.</doc>
+      <constructor name="new" c:identifier="gst_index_factory_new">
+        <doc xml:whitespace="preserve">Create a new indexfactory with the given parameters</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstIndexFactory.</doc>
+          <type name="IndexFactory" c:type="GstIndexFactory*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of indexfactory to create</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="longdesc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">long description of indexfactory to create</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the GType of the GstIndex element of this factory</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="find" c:identifier="gst_index_factory_find">
+        <doc xml:whitespace="preserve">Search for an indexfactory of the given name.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">#GstIndexFactory if found, NULL otherwise</doc>
+          <type name="IndexFactory" c:type="GstIndexFactory*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of indexfactory to find</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="make" c:identifier="gst_index_factory_make">
+        <doc xml:whitespace="preserve">Create a new #GstIndex instance from the
+indexfactory with the given name.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstIndex instance.</doc>
+          <type name="Index" c:type="GstIndex*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the factory used to create the instance</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="create" c:identifier="gst_index_factory_create">
+        <doc xml:whitespace="preserve">Create a new #GstIndex instance from the
+given indexfactory.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstIndex instance.</doc>
+          <type name="Index" c:type="GstIndex*"/>
+        </return-value>
+      </method>
+      <method name="destroy" c:identifier="gst_index_factory_destroy">
+        <doc xml:whitespace="preserve">Removes the index from the global list.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <field name="feature">
+        <type name="PluginFeature" c:type="GstPluginFeature"/>
+      </field>
+      <field name="longdesc">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="type">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </class>
+    <record name="IndexFactoryClass"
+            c:type="GstIndexFactoryClass"
+            glib:is-gtype-struct-for="IndexFactory">
+      <field name="parent">
+        <type name="PluginFeatureClass" c:type="GstPluginFeatureClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <callback name="IndexFilter" c:type="GstIndexFilter">
+      <doc xml:whitespace="preserve">Function to filter out entries in the index.
+to the index, %FALSE otherwise.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">This function should return %TRUE if the entry is to be added</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The index being queried</doc>
+          <type name="Index" c:type="GstIndex*"/>
+        </parameter>
+        <parameter name="entry" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The entry to be added.</doc>
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <doc xml:whitespace="preserve">User data passed to the function.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="IndexFlags" c:type="GstIndexFlags">
+      <doc xml:whitespace="preserve">Flags for this index</doc>
+      <member name="writable" value="16" c:identifier="GST_INDEX_WRITABLE"/>
+      <member name="readable" value="32" c:identifier="GST_INDEX_READABLE"/>
+      <member name="flag_last"
+              value="4096"
+              c:identifier="GST_INDEX_FLAG_LAST"/>
+    </bitfield>
+    <record name="IndexGroup" c:type="GstIndexGroup">
+      <doc xml:whitespace="preserve">A group of related entries in an index.</doc>
+      <field name="groupnum" readable="0" private="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="entries" readable="0" private="1">
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="certainty" readable="0" private="1">
+        <type name="IndexCertainty" c:type="GstIndexCertainty"/>
+      </field>
+      <field name="peergroup" readable="0" private="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+    </record>
+    <enumeration name="IndexLookupMethod" c:type="GstIndexLookupMethod">
+      <doc xml:whitespace="preserve">Specify the method to find an index entry in the index.</doc>
+      <member name="exact" value="0" c:identifier="GST_INDEX_LOOKUP_EXACT"/>
+      <member name="before" value="1" c:identifier="GST_INDEX_LOOKUP_BEFORE"/>
+      <member name="after" value="2" c:identifier="GST_INDEX_LOOKUP_AFTER"/>
+    </enumeration>
+    <callback name="IndexResolver" c:type="GstIndexResolver">
+      <doc xml:whitespace="preserve">Function to resolve ids to writer descriptions.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if an id could be assigned to the writer.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the index being queried.</doc>
+          <type name="Index" c:type="GstIndex*"/>
+        </parameter>
+        <parameter name="writer" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The object that wants to write</doc>
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="writer_string" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A description of the writer.</doc>
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <doc xml:whitespace="preserve">user_data as registered</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="IndexResolverMethod" c:type="GstIndexResolverMethod">
+      <doc xml:whitespace="preserve">The method used to resolve index writers</doc>
+      <member name="custom"
+              value="0"
+              c:identifier="GST_INDEX_RESOLVER_CUSTOM"/>
+      <member name="gtype" value="1" c:identifier="GST_INDEX_RESOLVER_GTYPE"/>
+      <member name="path" value="2" c:identifier="GST_INDEX_RESOLVER_PATH"/>
+    </enumeration>
+    <record name="Iterator" c:type="GstIterator">
+      <doc xml:whitespace="preserve">A GstIterator is used to retrieve multiple objects from another object in
+a threadsafe way.
+Various GStreamer objects provide access to their internal structures using
+an iterator.
+In general, whenever calling a GstIterator function results in your code
+receiving a refcounted object, the refcount for that object will have been
+increased.  Your code is responsible for unrefing that object after use.
+The basic use pattern of an iterator is as follows:
+&lt;example&gt;
+&lt;title&gt;Using an iterator&lt;/title&gt;
+&lt;programlisting&gt;
+it = _get_iterator(object);
+done = FALSE;
+while (!done) {
+switch (gst_iterator_next (it, &amp;amp;item)) {
+case GST_ITERATOR_OK:
+... use/change item here...
+gst_object_unref (item);
+break;
+case GST_ITERATOR_RESYNC:
+...rollback changes to items...
+gst_iterator_resync (it);
+break;
+case GST_ITERATOR_ERROR:
+...wrong parameters were given...
+done = TRUE;
+break;
+case GST_ITERATOR_DONE:
+done = TRUE;
+break;
+}
+}
+gst_iterator_free (it);
+&lt;/programlisting&gt;
+&lt;/example&gt;
+Last reviewed on 2009-06-16 (0.10.24)</doc>
+      <field name="next" writable="1">
+        <type name="IteratorNextFunction" c:type="GstIteratorNextFunction"/>
+      </field>
+      <field name="item" writable="1">
+        <type name="IteratorItemFunction" c:type="GstIteratorItemFunction"/>
+      </field>
+      <field name="resync" writable="1">
+        <type name="IteratorResyncFunction"
+              c:type="GstIteratorResyncFunction"/>
+      </field>
+      <field name="free" writable="1">
+        <type name="IteratorFreeFunction" c:type="GstIteratorFreeFunction"/>
+      </field>
+      <field name="pushed" writable="1">
+        <type name="Iterator" c:type="GstIterator*"/>
+      </field>
+      <field name="type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="lock" writable="1">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="cookie" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="master_cookie" writable="1">
+        <type name="guint32" c:type="guint32*"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+      <method name="filter"
+              c:identifier="gst_iterator_filter"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Create a new iterator from an existing iterator. The new iterator
+will only return those elements that match the given compare function @func.
+in the iterator.
+When this iterator is freed, @it will also be freed.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstIterator.</doc>
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">the compare function to select elements</doc>
+            <type name="GLib.CompareFunc" c:type="GCompareFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data passed to the compare function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_custom" c:identifier="gst_iterator_find_custom">
+        <doc xml:whitespace="preserve">Find the first element in @it that matches the compare function @func.
+the refcount of a refcounted object will be increased before @func is 
+called, and should be unrefed after use in @func unless it is the matching
+element.
+The iterator will not be freed.
+This function will return NULL if an error happened to the iterator.
+function or NULL when no element matched.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The element in the iterator that matches the compare</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">the compare function to use</doc>
+            <type name="GLib.CompareFunc" c:type="GCompareFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data passed to the compare function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fold" c:identifier="gst_iterator_fold">
+        <doc xml:whitespace="preserve">Folds @func over the elements of @iter. That is to say, @func will be called
+as @func (object, @ret, @user_data) for each object in @it. The normal use
+of this procedure is to accumulate the results of operating on the objects in
+before @func is called, and it should be unrefed after use in @func.
+This procedure can be used (and is used internally) to implement the
+gst_iterator_foreach() and gst_iterator_find_custom() operations.
+The fold will proceed as long as @func returns TRUE. When the iterator has no
+more arguments, %GST_ITERATOR_DONE will be returned. If @func returns FALSE,
+the fold will stop, and %GST_ITERATOR_OK will be returned. Errors or resyncs
+will cause fold to return %GST_ITERATOR_ERROR or %GST_ITERATOR_RESYNC as
+appropriate.
+The iterator will not be freed.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GstIteratorResult, as described above.</doc>
+          <type name="IteratorResult" c:type="GstIteratorResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <doc xml:whitespace="preserve">the fold function</doc>
+            <type name="IteratorFoldFunction"
+                  c:type="GstIteratorFoldFunction"/>
+          </parameter>
+          <parameter name="ret" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the seed value passed to the fold function</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data passed to the fold function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="foreach" c:identifier="gst_iterator_foreach">
+        <doc xml:whitespace="preserve">Iterate over all element of @it and call the given function @func for
+each element.  As in gst_iterator_fold(), the refcount of a refcounted 
+object will be increased before @func is called, and should be unrefed
+after use.
+freed.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the result call to gst_iterator_fold(). The iterator will not be</doc>
+          <type name="IteratorResult" c:type="GstIteratorResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">the function to call for each element.</doc>
+            <type name="GLib.Func" c:type="GFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data passed to the function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free" c:identifier="gst_iterator_free">
+        <doc xml:whitespace="preserve">Free the iterator.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="next" c:identifier="gst_iterator_next">
+        <doc xml:whitespace="preserve">Get the next item from the iterator in @elem. 
+Only when this function returns %GST_ITERATOR_OK, @elem will contain a valid
+value. For iterators that return refcounted objects, the returned object
+will have its refcount increased and should therefore be unreffed after
+usage.
+When this function returns %GST_ITERATOR_DONE, no more elements can be
+retrieved from @it.
+A return value of %GST_ITERATOR_RESYNC indicates that the element list was
+concurrently updated. The user of @it should call gst_iterator_resync() to
+get the newly updated list. 
+A return value of %GST_ITERATOR_ERROR indicates an unrecoverable fatal error.
+is a refcounted object.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The result of the iteration. Unref @elem after usage if this</doc>
+          <type name="IteratorResult" c:type="GstIteratorResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="elem" transfer-ownership="none">
+            <doc xml:whitespace="preserve">pointer to hold next element</doc>
+            <type name="gpointer" c:type="gpointer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="push" c:identifier="gst_iterator_push">
+        <doc xml:whitespace="preserve">Pushes @other iterator onto @it. All calls performed on @it are
+forwarded to @other. If @other returns %GST_ITERATOR_DONE, it is
+popped again and calls are handled by @it again.
+This function is mainly used by objects implementing the iterator
+next function to recurse into substructures.
+When gst_iterator_resync() is called on @it, @other will automatically be
+popped.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="other" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GstIterator to push</doc>
+            <type name="Iterator" c:type="GstIterator*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="resync" c:identifier="gst_iterator_resync">
+        <doc xml:whitespace="preserve">Resync the iterator. this function is mostly called
+after gst_iterator_next() returned %GST_ITERATOR_RESYNC.
+When an iterator was pushed on @it, it will automatically be popped again
+with this function.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <callback name="IteratorDisposeFunction"
+              c:type="GstIteratorDisposeFunction">
+      <doc xml:whitespace="preserve">The function that will be called when a #GList iterator is freed. The
+owner of the #GList iterator can then clean up its resources.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="owner" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the owner of the iterator</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="IteratorFoldFunction" c:type="GstIteratorFoldFunction">
+      <doc xml:whitespace="preserve">A function to be passed to gst_iterator_fold().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if the fold should continue, FALSE if it should stop.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="item" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the item to fold</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="ret" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue collecting the result</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <doc xml:whitespace="preserve">data passed to gst_iterator_fold()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="IteratorFreeFunction" c:type="GstIteratorFreeFunction">
+      <doc xml:whitespace="preserve">This function will be called when the iterator is freed.
+Implementors of a #GstIterator should implement this
+function and pass it to the constructor of the custom iterator.
+The function will be called with the iterator lock held.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="it" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the iterator</doc>
+          <type name="Iterator" c:type="GstIterator*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="IteratorItem" c:type="GstIteratorItem">
+      <doc xml:whitespace="preserve">The result of a #GstIteratorItemFunction.</doc>
+      <member name="skip" value="0" c:identifier="GST_ITERATOR_ITEM_SKIP"/>
+      <member name="pass" value="1" c:identifier="GST_ITERATOR_ITEM_PASS"/>
+      <member name="end" value="2" c:identifier="GST_ITERATOR_ITEM_END"/>
+    </enumeration>
+    <callback name="IteratorItemFunction" c:type="GstIteratorItemFunction">
+      <doc xml:whitespace="preserve">The function that will be called after the next item of the iterator
+has been retrieved. This function will typically increase the refcount
+of the item or make a copy.
+Implementors of a #GstIterator should implement this
+function and pass it to the constructor of the custom iterator.
+The function will be called with the iterator lock held.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the result of the operation.</doc>
+        <type name="IteratorItem" c:type="GstIteratorItem"/>
+      </return-value>
+      <parameters>
+        <parameter name="it" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the iterator</doc>
+          <type name="Iterator" c:type="GstIterator*"/>
+        </parameter>
+        <parameter name="item" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the item being retrieved.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="IteratorNextFunction" c:type="GstIteratorNextFunction">
+      <doc xml:whitespace="preserve">The function that will be called when the next element of the iterator
+should be retrieved. 
+Implementors of a #GstIterator should implement this
+function and pass it to the constructor of the custom iterator.
+The function will be called with the iterator lock held.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the result of the operation.</doc>
+        <type name="IteratorResult" c:type="GstIteratorResult"/>
+      </return-value>
+      <parameters>
+        <parameter name="it" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the iterator</doc>
+          <type name="Iterator" c:type="GstIterator*"/>
+        </parameter>
+        <parameter name="result" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to hold the next item</doc>
+          <type name="gpointer" c:type="gpointer*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="IteratorResult" c:type="GstIteratorResult">
+      <doc xml:whitespace="preserve">The result of gst_iterator_next().</doc>
+      <member name="done" value="0" c:identifier="GST_ITERATOR_DONE"/>
+      <member name="ok" value="1" c:identifier="GST_ITERATOR_OK"/>
+      <member name="resync" value="2" c:identifier="GST_ITERATOR_RESYNC"/>
+      <member name="error" value="3" c:identifier="GST_ITERATOR_ERROR"/>
+    </enumeration>
+    <callback name="IteratorResyncFunction" c:type="GstIteratorResyncFunction">
+      <doc xml:whitespace="preserve">This function will be called whenever a concurrent update happened
+to the iterated datastructure. The implementor of the iterator should
+restart the iterator from the beginning and clean up any state it might
+have.
+Implementors of a #GstIterator should implement this
+function and pass it to the constructor of the custom iterator.
+The function will be called with the iterator lock held.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="it" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the iterator</doc>
+          <type name="Iterator" c:type="GstIterator*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <constant name="LICENSE_UNKNOWN" value="unknown">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <enumeration name="LibraryError"
+                 c:type="GstLibraryError"
+                 glib:error-quark="gst_library_error_quark">
+      <doc xml:whitespace="preserve">Library errors are for errors from the library being used by elements
+(initializing, finalizing, settings, ...)</doc>
+      <member name="failed" value="1" c:identifier="GST_LIBRARY_ERROR_FAILED"/>
+      <member name="too_lazy"
+              value="2"
+              c:identifier="GST_LIBRARY_ERROR_TOO_LAZY"/>
+      <member name="init" value="3" c:identifier="GST_LIBRARY_ERROR_INIT"/>
+      <member name="shutdown"
+              value="4"
+              c:identifier="GST_LIBRARY_ERROR_SHUTDOWN"/>
+      <member name="settings"
+              value="5"
+              c:identifier="GST_LIBRARY_ERROR_SETTINGS"/>
+      <member name="encode" value="6" c:identifier="GST_LIBRARY_ERROR_ENCODE"/>
+      <member name="num_errors"
+              value="7"
+              c:identifier="GST_LIBRARY_ERROR_NUM_ERRORS"/>
+    </enumeration>
+    <callback name="LogFunction" c:type="GstLogFunction">
+      <doc xml:whitespace="preserve">Function prototype for a logging function that can be registered with
+gst_debug_add_log_function().
+Use G_GNUC_NO_INSTRUMENT on that function.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="category" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GstDebugCategory</doc>
+          <type name="DebugCategory" c:type="GstDebugCategory*"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GstDebugLevel</doc>
+          <type name="DebugLevel" c:type="GstDebugLevel"/>
+        </parameter>
+        <parameter name="file" transfer-ownership="none">
+          <doc xml:whitespace="preserve">file name</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="function" transfer-ownership="none">
+          <doc xml:whitespace="preserve">function name</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="line" transfer-ownership="none">
+          <doc xml:whitespace="preserve">line number</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GObject</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="message" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the message</doc>
+          <type name="DebugMessage" c:type="GstDebugMessage*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">user data for the log function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <constant name="MESSAGE_TRACE_NAME" value="GstMessage">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="MSECOND" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Message"
+           c:symbol-prefix="message"
+           c:type="GstMessage"
+           parent="MiniObject"
+           glib:type-name="GstMessage"
+           glib:get-type="gst_message_get_type"
+           glib:type-struct="MessageClass"
+           glib:fundamental="1">
+      <doc xml:whitespace="preserve">Messages are implemented as a subclass of #GstMiniObject with a generic
+#GstStructure as the content. This allows for writing custom messages without
+requiring an API change while allowing a wide range of different types
+of messages.
+Messages are posted by objects in the pipeline and are passed to the
+application using the #GstBus.
+The basic use pattern of posting a message on a #GstBus is as follows:
+&lt;example&gt;
+&lt;title&gt;Posting a #GstMessage&lt;/title&gt;
+&lt;programlisting&gt;
+gst_bus_post (bus, gst_message_new_eos());
+&lt;/programlisting&gt;
+&lt;/example&gt;
+A #GstElement usually posts messages on the bus provided by the parent
+container using gst_element_post_message().
+Last reviewed on 2005-11-09 (0.9.4)</doc>
+      <constructor name="new_application"
+                   c:identifier="gst_message_new_application">
+        <doc xml:whitespace="preserve">Create a new application-typed message. GStreamer will never create these
+messages; they are a gift from us to you. Enjoy.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The new application message.</doc>
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the object originating the message.</doc>
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="structure" transfer-ownership="full">
+            <doc xml:whitespace="preserve">the structure for the message. The message will take ownership of the structure.</doc>
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_async_done"
+                   c:identifier="gst_message_new_async_done"
+                   version="0.10.13">
+        <doc xml:whitespace="preserve">The message is posted when elements completed an ASYNC state change.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The new async_done message.</doc>
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The object originating the message.</doc>
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_async_start"
+                   c:identifier="gst_message_new_async_start"
+                   version="0.10.13">
+        <doc xml:whitespace="preserve">This message is posted by elements when they start an ASYNC state change. 
+PLAYING.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The new async_start message.</doc>
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The object originating the message.</doc>
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="new_base_time" transfer-ownership="none">
+            <doc xml:whitespace="preserve">if a new base_time should be set on the element</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_buffering"
+                   c:identifier="gst_message_new_buffering"
+                   version="0.10.11">
+        <doc xml:whitespace="preserve">Create a new buffering message. This message can be posted by an element that
+needs to buffer data before it can continue processing. @percent should be a
+value between 0 and 100. A value of 100 means that the buffering completed.
+When @percent is &lt; 100 the application should PAUSE a PLAYING pipeline. When
+The application must be prepared to receive BUFFERING messages in the
+PREROLLING state and may only set the pipeline to PLAYING after receiving a
+message with @percent set to 100, which can happen after the pipeline
+completed prerolling. 
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The new buffering message.</doc>
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The object originating the message.</doc>
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="percent" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The buffering percent</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_clock_lost"
+                   c:identifier="gst_message_new_clock_lost">
+        <doc xml:whitespace="preserve">Create a clock lost message. This message is posted whenever the
+clock is not valid anymore.
+If this message is posted by the pipeline, the pipeline will
+select a new clock again when it goes to PLAYING. It might therefore
+be needed to set the pipeline to PAUSED and PLAYING again.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The new clock lost message.</doc>
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the object originating the message.</doc>
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="clock" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the clock that was lost</doc>
+            <type name="Clock" c:type="GstClock*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_clock_provide"
+                   c:identifier="gst_message_new_clock_provide">
+        <doc xml:whitespace="preserve">Create a clock provide message. This message is posted whenever an
+element is ready to provide a clock or lost its ability to provide
+a clock (maybe because it paused or became EOS).
+This message is mainly used internally to manage the clock
+selection.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new provide clock message.</doc>
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the object originating the message.</doc>
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="clock" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the clock it provides</doc>
+            <type name="Clock" c:type="GstClock*"/>
+          </parameter>
+          <parameter name="ready" transfer-ownership="none">
+            <doc xml:whitespace="preserve">TRUE if the sender can provide a clock</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_custom" c:identifier="gst_message_new_custom">
+        <doc xml:whitespace="preserve">Create a new custom-typed message. This can be used for anything not
+handled by other message-specific functions to pass a message to the
+app. The structure field can be NULL.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The new message.</doc>
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GstMessageType to distinguish messages</doc>
+            <type name="MessageType" c:type="GstMessageType"/>
+          </parameter>
+          <parameter name="src" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The object originating the message.</doc>
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="structure" transfer-ownership="full">
+            <doc xml:whitespace="preserve">the structure for the message. The message will take ownership of the structure.</doc>
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_duration" c:identifier="gst_message_new_duration">
+        <doc xml:whitespace="preserve">Create a new duration message. This message is posted by elements that
+know the duration of a stream in a specific format. This message
+is received by bins and is used to calculate the total duration of a
+pipeline. Elements may post a duration message with a duration of
+GST_CLOCK_TIME_NONE to indicate that the duration has changed and the 
+cached duration should be discarded. The new duration can then be 
+retrieved via a query.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The new duration message.</doc>
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The object originating the message.</doc>
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The format of the duration</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="duration" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The new duration</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_element" c:identifier="gst_message_new_element">
+        <doc xml:whitespace="preserve">Create a new element-specific message. This is meant as a generic way of
+allowing one-way communication from an element to an application, for example
+"the firewire cable was unplugged". The format of the message should be
+documented in the element's documentation. The structure field can be NULL.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The new element message.</doc>
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The object originating the message.</doc>
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="structure" transfer-ownership="full">
+            <doc xml:whitespace="preserve">The structure for the message. The message will take ownership of the structure.</doc>
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_eos" c:identifier="gst_message_new_eos">
+        <doc xml:whitespace="preserve">Create a new eos message. This message is generated and posted in
+the sink elements of a GstBin. The bin will only forward the EOS
+message to the application if all sinks have posted an EOS message.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The new eos message.</doc>
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The object originating the message.</doc>
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_error" c:identifier="gst_message_new_error">
+        <doc xml:whitespace="preserve">Create a new error message. The message will copy @error and
+occured. The pipeline will probably (partially) stop. The application
+receiving this message should stop the pipeline.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new error message.</doc>
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The object originating the message.</doc>
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="error" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The GError for this message.</doc>
+            <type name="GLib.Error" c:type="GError*"/>
+          </parameter>
+          <parameter name="debug" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A debugging string.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_info"
+                   c:identifier="gst_message_new_info"
+                   version="0.10.12">
+        <doc xml:whitespace="preserve">Create a new info message. The message will make copies of @error and
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new info message.</doc>
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The object originating the message.</doc>
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="error" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The GError for this message.</doc>
+            <type name="GLib.Error" c:type="GError*"/>
+          </parameter>
+          <parameter name="debug" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A debugging string.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_latency"
+                   c:identifier="gst_message_new_latency"
+                   version="0.10.12">
+        <doc xml:whitespace="preserve">This message can be posted by elements when their latency requirements have
+changed.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The new latency message.</doc>
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The object originating the message.</doc>
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_new_clock"
+                   c:identifier="gst_message_new_new_clock">
+        <doc xml:whitespace="preserve">Create a new clock message. This message is posted whenever the
+pipeline selectes a new clock for the pipeline.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The new new clock message.</doc>
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The object originating the message.</doc>
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="clock" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new selected clock</doc>
+            <type name="Clock" c:type="GstClock*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_progress"
+                   c:identifier="gst_message_new_progress"
+                   version="0.10.33">
+        <doc xml:whitespace="preserve">Progress messages are posted by elements when they use an asynchronous task
+to perform actions triggered by a state change.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The new qos message.</doc>
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The object originating the message.</doc>
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstProgressType</doc>
+            <type name="ProgressType" c:type="GstProgressType"/>
+          </parameter>
+          <parameter name="code" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a progress code</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <doc xml:whitespace="preserve">free, user visible text describing the progress</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_qos"
+                   c:identifier="gst_message_new_qos"
+                   version="0.10.29">
+        <doc xml:whitespace="preserve">A QOS message is posted on the bus whenever an element decides to drop a
+buffer because of QoS reasons or whenever it changes its processing strategy
+because of QoS reasons (quality adjustments such as processing at lower
+accuracy).
+This message can be posted by an element that performs synchronisation against the
+clock (live) or it could be dropped by an element that performs QoS because of QOS
+events received from a downstream element (!live).
+respective running-time, stream-time, timestamp and duration of the (dropped)
+buffer that generated the QoS event. Values can be left to
+GST_CLOCK_TIME_NONE when unknown.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The new qos message.</doc>
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The object originating the message.</doc>
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="live" transfer-ownership="none">
+            <doc xml:whitespace="preserve">if the message was generated by a live element</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="running_time" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the running time of the buffer that generated the message</doc>
+            <type name="guint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="stream_time" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the stream time of the buffer that generated the message</doc>
+            <type name="guint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="timestamp" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the timestamps of the buffer that generated the message</doc>
+            <type name="guint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="duration" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the duration of the buffer that generated the message</doc>
+            <type name="guint64" c:type="guint64"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_request_state"
+                   c:identifier="gst_message_new_request_state"
+                   version="0.10.23">
+        <doc xml:whitespace="preserve">This message can be posted by elements when they want to have their state
+changed. A typical use case would be an audio server that wants to pause the
+pipeline because a higher priority stream is being played.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new requst state message.</doc>
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the object originating the message.</doc>
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="state" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The new requested state</doc>
+            <type name="State" c:type="GstState"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_segment_done"
+                   c:identifier="gst_message_new_segment_done">
+        <doc xml:whitespace="preserve">Create a new segment done message. This message is posted by elements that
+finish playback of a segment as a result of a segment seek. This message
+is received by the application after all elements that posted a segment_start
+have posted the segment_done.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new segment done message.</doc>
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the object originating the message.</doc>
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The format of the position being done</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The position of the segment being done</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_segment_start"
+                   c:identifier="gst_message_new_segment_start">
+        <doc xml:whitespace="preserve">Create a new segment message. This message is posted by elements that
+start playback of a segment as a result of a segment seek. This message
+is not received by the application but is used for maintenance reasons in
+container elements.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new segment start message.</doc>
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The object originating the message.</doc>
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The format of the position being played</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The position of the segment being played</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_state_changed"
+                   c:identifier="gst_message_new_state_changed">
+        <doc xml:whitespace="preserve">Create a state change message. This message is posted whenever an element
+changed its state.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new state change message.</doc>
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the object originating the message</doc>
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="oldstate" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the previous state</doc>
+            <type name="State" c:type="GstState"/>
+          </parameter>
+          <parameter name="newstate" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new (current) state</doc>
+            <type name="State" c:type="GstState"/>
+          </parameter>
+          <parameter name="pending" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the pending (target) state</doc>
+            <type name="State" c:type="GstState"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_state_dirty"
+                   c:identifier="gst_message_new_state_dirty">
+        <doc xml:whitespace="preserve">Create a state dirty message. This message is posted whenever an element
+changed its state asynchronously and is used internally to update the
+states of container objects.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new state dirty message.</doc>
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the object originating the message</doc>
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_step_done"
+                   c:identifier="gst_message_new_step_done"
+                   version="0.10.24">
+        <doc xml:whitespace="preserve">This message is posted by elements when they complete a part, when @intermediate set
+to TRUE, or a complete step operation.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new step_done message.</doc>
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The object originating the message.</doc>
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the format of @amount</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="amount" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the amount of stepped data</doc>
+            <type name="guint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="rate" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the rate of the stepped amount</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="flush" transfer-ownership="none">
+            <doc xml:whitespace="preserve">is this an flushing step</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="intermediate" transfer-ownership="none">
+            <doc xml:whitespace="preserve">is this an intermediate step</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="duration" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the duration of the data</doc>
+            <type name="guint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="eos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the step caused EOS</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_step_start"
+                   c:identifier="gst_message_new_step_start"
+                   version="0.10.24">
+        <doc xml:whitespace="preserve">This message is posted by elements when they accept or activate a new step
+event for @amount in @format. 
+queued it for execution in the streaming threads.
+is now ready to start executing the step in the streaming thread. After this
+message is emited, the application can queue a new step operation in the
+element.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The new step_start message.</doc>
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The object originating the message.</doc>
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="active" transfer-ownership="none">
+            <doc xml:whitespace="preserve">if the step is active or queued</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the format of @amount</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="amount" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the amount of stepped data</doc>
+            <type name="guint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="rate" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the rate of the stepped amount</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="flush" transfer-ownership="none">
+            <doc xml:whitespace="preserve">is this an flushing step</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="intermediate" transfer-ownership="none">
+            <doc xml:whitespace="preserve">is this an intermediate step</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_stream_status"
+                   c:identifier="gst_message_new_stream_status"
+                   version="0.10.24.">
+        <doc xml:whitespace="preserve">Create a new stream status message. This message is posted when a streaming
+thread is created/destroyed or when the state changed.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new stream status message.</doc>
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The object originating the message.</doc>
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The stream status type.</doc>
+            <type name="StreamStatusType" c:type="GstStreamStatusType"/>
+          </parameter>
+          <parameter name="owner" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the owner element of @src.</doc>
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_structure_change"
+                   c:identifier="gst_message_new_structure_change"
+                   version="0.10.22.">
+        <doc xml:whitespace="preserve">Create a new structure change message. This message is posted when the
+structure of a pipeline is in the process of being changed, for example
+when pads are linked or unlinked.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new structure change message.</doc>
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The object originating the message.</doc>
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The change type.</doc>
+            <type name="StructureChangeType" c:type="GstStructureChangeType"/>
+          </parameter>
+          <parameter name="owner" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The owner element of @src.</doc>
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter name="busy" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Whether the structure change is busy.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_tag" c:identifier="gst_message_new_tag">
+        <doc xml:whitespace="preserve">Create a new tag message. The message will take ownership of the tag list.
+The message is posted by elements that discovered a new taglist.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new tag message.</doc>
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The object originating the message.</doc>
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="tag_list" transfer-ownership="full">
+            <doc xml:whitespace="preserve">the tag list for the message.</doc>
+            <type name="TagList" c:type="GstTagList*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_tag_full"
+                   c:identifier="gst_message_new_tag_full"
+                   version="0.10.24">
+        <doc xml:whitespace="preserve">Create a new tag message. The message will take ownership of the tag list.
+The message is posted by elements that discovered a new taglist.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new tag message.</doc>
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the object originating the message.</doc>
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="pad" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the originating pad for the tag.</doc>
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+          <parameter name="tag_list" transfer-ownership="full">
+            <doc xml:whitespace="preserve">the tag list for the message.</doc>
+            <type name="TagList" c:type="GstTagList*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_warning" c:identifier="gst_message_new_warning">
+        <doc xml:whitespace="preserve">Create a new warning message. The message will make copies of @error and
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The new warning message.</doc>
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The object originating the message.</doc>
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="error" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The GError for this message.</doc>
+            <type name="GLib.Error" c:type="GError*"/>
+          </parameter>
+          <parameter name="debug" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A debugging string.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="type_get_name" c:identifier="gst_message_type_get_name">
+        <doc xml:whitespace="preserve">Get a printable name for the given message type. Do not modify or free.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a reference to the static name of the message.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the message type</doc>
+            <type name="MessageType" c:type="GstMessageType"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="type_to_quark" c:identifier="gst_message_type_to_quark">
+        <doc xml:whitespace="preserve">Get the unique quark for the given message type.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the quark associated with the message type</doc>
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the message type</doc>
+            <type name="MessageType" c:type="GstMessageType"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_seqnum"
+              c:identifier="gst_message_get_seqnum"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Retrieve the sequence number of a message.
+Messages have ever-incrementing sequence numbers, which may also be set
+explicitly via gst_message_set_seqnum(). Sequence numbers are typically used
+to indicate that a message corresponds to some other set of messages or
+events, for example a SEGMENT_DONE message corresponding to a SEEK event. It
+is considered good practice to make this correspondence when possible, though
+it is not required.
+Note that events and messages share the same sequence number incrementor;
+two events or messages will never not have the same sequence number unless
+that correspondence was made explicitly.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The message's sequence number.</doc>
+          <type name="guint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="get_stream_status_object"
+              c:identifier="gst_message_get_stream_status_object"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Extracts the object managing the streaming thread from @message.
+This object is usually of type GstTask but other types can be added in the
+future. The object remains valid as long as @message is valid.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a GValue containing the object that manages the streaming thread.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+      </method>
+      <method name="get_structure" c:identifier="gst_message_get_structure">
+        <doc xml:whitespace="preserve">Access the structure of the message.
+still owned by the message, which means that you should not free it and
+that the pointer becomes invalid when you free the message.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The structure of the message. The structure is</doc>
+          <type name="Structure" c:type="GstStructure*"/>
+        </return-value>
+      </method>
+      <method name="parse_async_start"
+              c:identifier="gst_message_parse_async_start"
+              version="0.10.13">
+        <doc xml:whitespace="preserve">Extract the new_base_time from the async_start message. 
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_base_time"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">Result location for the new_base_time or NULL</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_buffering"
+              c:identifier="gst_message_parse_buffering"
+              version="0.10.11">
+        <doc xml:whitespace="preserve">Extracts the buffering percent from the GstMessage. see also
+gst_message_new_buffering().
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="percent"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">Return location for the percent.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_buffering_stats"
+              c:identifier="gst_message_parse_buffering_stats"
+              version="0.10.20">
+        <doc xml:whitespace="preserve">Extracts the buffering stats values from @message.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a buffering mode, or NULL</doc>
+            <type name="BufferingMode" c:type="GstBufferingMode*"/>
+          </parameter>
+          <parameter name="avg_in"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the average input rate, or NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="avg_out"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the average output rate, or NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="buffering_left"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">amount of buffering time left in milliseconds, or NULL</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_clock_lost"
+              c:identifier="gst_message_parse_clock_lost">
+        <doc xml:whitespace="preserve">Extracts the lost clock from the GstMessage.
+The clock object returned remains valid until the message is freed.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="clock"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a pointer to hold the lost clock</doc>
+            <type name="Clock" c:type="GstClock**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_clock_provide"
+              c:identifier="gst_message_parse_clock_provide">
+        <doc xml:whitespace="preserve">Extracts the clock and ready flag from the GstMessage.
+The clock object returned remains valid until the message is freed.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="clock"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a pointer to  hold a clock object, or NULL</doc>
+            <type name="Clock" c:type="GstClock**"/>
+          </parameter>
+          <parameter name="ready"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a pointer to hold the ready flag, or NULL</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_duration" c:identifier="gst_message_parse_duration">
+        <doc xml:whitespace="preserve">Extracts the duration and format from the duration message. The duration
+might be GST_CLOCK_TIME_NONE, which indicates that the duration has
+changed. Applications should always use a query to retrieve the duration
+of a pipeline.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">Result location for the format, or NULL</doc>
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="duration"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">Result location for the duration, or NULL</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_error" c:identifier="gst_message_parse_error">
+        <doc xml:whitespace="preserve">Extracts the GError and debug string from the GstMessage. The values returned
+in the output arguments are copies; the caller must free them when done.
+Typical usage of this function might be:
+|[
+...
+switch (GST_MESSAGE_TYPE (msg)) {
+GError *err = NULL;
+gchar *dbg_info = NULL;
+gst_message_parse_error (msg, &amp;amp;err, &amp;amp;dbg_info);
+GST_OBJECT_NAME (msg-&gt;src), err-&gt;message);
+g_error_free (err);
+g_free (dbg_info);
+break;
+}
+...
+}
+...
+]|
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gerror"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location for the GError</doc>
+            <type name="GLib.Error" c:type="GError**"/>
+          </parameter>
+          <parameter name="debug"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location for the debug message, or NULL</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_info"
+              c:identifier="gst_message_parse_info"
+              version="0.10.12">
+        <doc xml:whitespace="preserve">Extracts the GError and debug string from the GstMessage. The values returned
+in the output arguments are copies; the caller must free them when done.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gerror"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location for the GError</doc>
+            <type name="GLib.Error" c:type="GError**"/>
+          </parameter>
+          <parameter name="debug"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location for the debug message, or NULL</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_new_clock"
+              c:identifier="gst_message_parse_new_clock">
+        <doc xml:whitespace="preserve">Extracts the new clock from the GstMessage.
+The clock object returned remains valid until the message is freed.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="clock"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a pointer to hold the selected new clock</doc>
+            <type name="Clock" c:type="GstClock**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_progress"
+              c:identifier="gst_message_parse_progress"
+              version="0.10.33">
+        <doc xml:whitespace="preserve">Parses the progress @type, @code and @text.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location for the type</doc>
+            <type name="ProgressType" c:type="GstProgressType*"/>
+          </parameter>
+          <parameter name="code"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location for the code</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+          <parameter name="text"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location for the text</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_qos"
+              c:identifier="gst_message_parse_qos"
+              version="0.10.29">
+        <doc xml:whitespace="preserve">Extract the timestamps and live status from the QoS message.
+The returned values give the running_time, stream_time, timestamp and
+duration of the dropped buffer. Values of GST_CLOCK_TIME_NONE mean unknown
+values.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="live"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">if the message was generated by a live element</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="running_time"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the running time of the buffer that generated the message</doc>
+            <type name="guint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="stream_time"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the stream time of the buffer that generated the message</doc>
+            <type name="guint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="timestamp"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the timestamps of the buffer that generated the message</doc>
+            <type name="guint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="duration"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the duration of the buffer that generated the message</doc>
+            <type name="guint64" c:type="guint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_qos_stats"
+              c:identifier="gst_message_parse_qos_stats"
+              version="0.10.29">
+        <doc xml:whitespace="preserve">Extract the QoS stats representing the history of the current continuous
+pipeline playback period.
+When @format is @GST_FORMAT_UNDEFINED both @dropped and @processed are
+invalid. Values of -1 for either @processed or @dropped mean unknown values.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">Units of the 'processed' and 'dropped' fields. Video sinks and video filters will use GST_FORMAT_BUFFERS (frames). Audio sinks and audio filters will likely use GST_FORMAT_DEFAULT (samples).</doc>
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="processed"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">Total number of units correctly processed since the last state change to READY or a flushing operation.</doc>
+            <type name="guint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="dropped"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">Total number of units dropped since the last state change to READY or a flushing operation.</doc>
+            <type name="guint64" c:type="guint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_qos_values"
+              c:identifier="gst_message_parse_qos_values"
+              version="0.10.29">
+        <doc xml:whitespace="preserve">Extract the QoS values that have been calculated/analysed from the QoS data
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="jitter"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">The difference of the running-time against the deadline.</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="proportion"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">Long term prediction of the ideal rate relative to normal rate to get optimal quality.</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="quality"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">An element dependent integer value that specifies the current quality level of the element. The default maximum quality is 1000000.</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_request_state"
+              c:identifier="gst_message_parse_request_state"
+              version="0.10.23">
+        <doc xml:whitespace="preserve">Extract the requested state from the request_state message.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="state"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">Result location for the requested state or NULL</doc>
+            <type name="State" c:type="GstState*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_segment_done"
+              c:identifier="gst_message_parse_segment_done">
+        <doc xml:whitespace="preserve">Extracts the position and format from the segment start message.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">Result location for the format, or NULL</doc>
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="position"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">Result location for the position, or NULL</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_segment_start"
+              c:identifier="gst_message_parse_segment_start">
+        <doc xml:whitespace="preserve">Extracts the position and format from the segment start message.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">Result location for the format, or NULL</doc>
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="position"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">Result location for the position, or NULL</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_state_changed"
+              c:identifier="gst_message_parse_state_changed">
+        <doc xml:whitespace="preserve">Extracts the old and new states from the GstMessage.
+Typical usage of this function might be:
+|[
+...
+switch (GST_MESSAGE_TYPE (msg)) {
+GstState old_state, new_state;
+gst_message_parse_state_changed (msg, &amp;amp;old_state, &amp;amp;new_state, NULL);
+g_print ("Element %s changed state from %s to %s.\n",
+GST_OBJECT_NAME (msg-&gt;src),
+gst_element_state_get_name (old_state),
+gst_element_state_get_name (new_state));
+break;
+}
+...
+}
+...
+]|
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="oldstate"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the previous state, or NULL</doc>
+            <type name="State" c:type="GstState*"/>
+          </parameter>
+          <parameter name="newstate"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the new (current) state, or NULL</doc>
+            <type name="State" c:type="GstState*"/>
+          </parameter>
+          <parameter name="pending"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the pending (target) state, or NULL</doc>
+            <type name="State" c:type="GstState*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_step_done"
+              c:identifier="gst_message_parse_step_done"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Extract the values the step_done message.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">result location for the format</doc>
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="amount"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">result location for the amount</doc>
+            <type name="guint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="rate"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">result location for the rate</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="flush"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">result location for the flush flag</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="intermediate"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">result location for the intermediate flag</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="duration"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">result location for the duration</doc>
+            <type name="guint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="eos"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">result location for the EOS flag</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_step_start"
+              c:identifier="gst_message_parse_step_start"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Extract the values from step_start message.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="active"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">result location for the active flag</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="format"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">result location for the format</doc>
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="amount"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">result location for the amount</doc>
+            <type name="guint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="rate"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">result location for the rate</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="flush"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">result location for the flush flag</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="intermediate"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">result location for the intermediate flag</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_stream_status"
+              c:identifier="gst_message_parse_stream_status"
+              version="0.10.24.">
+        <doc xml:whitespace="preserve">Extracts the stream status type and owner the GstMessage. The returned
+owner remains valid for as long as the reference to @message is valid and
+should thus not be unreffed.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">A pointer to hold the status type</doc>
+            <type name="StreamStatusType" c:type="GstStreamStatusType*"/>
+          </parameter>
+          <parameter name="owner"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">The owner element of the message source</doc>
+            <type name="Element" c:type="GstElement**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_structure_change"
+              c:identifier="gst_message_parse_structure_change"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Extracts the change type and completion status from the GstMessage.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">A pointer to hold the change type</doc>
+            <type name="StructureChangeType" c:type="GstStructureChangeType*"/>
+          </parameter>
+          <parameter name="owner"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">The owner element of the message source</doc>
+            <type name="Element" c:type="GstElement**"/>
+          </parameter>
+          <parameter name="busy"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a pointer to hold whether the change is in progress or has been completed</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_tag" c:identifier="gst_message_parse_tag">
+        <doc xml:whitespace="preserve">Extracts the tag list from the GstMessage. The tag list returned in the
+output argument is a copy; the caller must free it when done.
+Typical usage of this function might be:
+|[
+...
+switch (GST_MESSAGE_TYPE (msg)) {
+GstTagList *tags = NULL;
+gst_message_parse_tag (msg, &amp;amp;tags);
+g_print ("Got tags from element %s\n", GST_OBJECT_NAME (msg-&gt;src));
+handle_tags (tags);
+gst_tag_list_free (tags);
+break;
+}
+...
+}
+...
+]|
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag_list"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the tag-list.</doc>
+            <type name="TagList" c:type="GstTagList**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_tag_full"
+              c:identifier="gst_message_parse_tag_full"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Extracts the tag list from the GstMessage. The tag list returned in the
+output argument is a copy; the caller must free it when done.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location where the originating pad is stored, unref after usage</doc>
+            <type name="Pad" c:type="GstPad**"/>
+          </parameter>
+          <parameter name="tag_list"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">return location for the tag-list.</doc>
+            <type name="TagList" c:type="GstTagList**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_warning" c:identifier="gst_message_parse_warning">
+        <doc xml:whitespace="preserve">Extracts the GError and debug string from the GstMessage. The values returned
+in the output arguments are copies; the caller must free them when done.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gerror"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location for the GError</doc>
+            <type name="GLib.Error" c:type="GError**"/>
+          </parameter>
+          <parameter name="debug"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">location for the debug message, or NULL</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_buffering_stats"
+              c:identifier="gst_message_set_buffering_stats"
+              version="0.10.20">
+        <doc xml:whitespace="preserve">Configures the buffering stats values in @message.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a buffering mode</doc>
+            <type name="BufferingMode" c:type="GstBufferingMode"/>
+          </parameter>
+          <parameter name="avg_in" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the average input rate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="avg_out" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the average output rate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="buffering_left" transfer-ownership="none">
+            <doc xml:whitespace="preserve">amount of buffering time left in milliseconds</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_qos_stats"
+              c:identifier="gst_message_set_qos_stats"
+              version="0.10.29">
+        <doc xml:whitespace="preserve">Set the QoS stats representing the history of the current continuous pipeline
+playback period.
+When @format is @GST_FORMAT_UNDEFINED both @dropped and @processed are
+invalid. Values of -1 for either @processed or @dropped mean unknown values.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Units of the 'processed' and 'dropped' fields. Video sinks and video filters will use GST_FORMAT_BUFFERS (frames). Audio sinks and audio filters will likely use GST_FORMAT_DEFAULT (samples).</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="processed" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Total number of units correctly processed since the last state change to READY or a flushing operation.</doc>
+            <type name="guint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="dropped" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Total number of units dropped since the last state change to READY or a flushing operation.</doc>
+            <type name="guint64" c:type="guint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_qos_values"
+              c:identifier="gst_message_set_qos_values"
+              version="0.10.29">
+        <doc xml:whitespace="preserve">Set the QoS values that have been calculated/analysed from the QoS data
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="jitter" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The difference of the running-time against the deadline.</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="proportion" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Long term prediction of the ideal rate relative to normal rate to get optimal quality.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="quality" transfer-ownership="none">
+            <doc xml:whitespace="preserve">An element dependent integer value that specifies the current quality level of the element. The default maximum quality is 1000000.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_seqnum"
+              c:identifier="gst_message_set_seqnum"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Set the sequence number of a message.
+This function might be called by the creator of a message to indicate that
+the message relates to other messages or events. See gst_message_get_seqnum()
+for more information.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="seqnum" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A sequence number.</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_stream_status_object"
+              c:identifier="gst_message_set_stream_status_object"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Configures the object handling the streaming thread. This is usually a
+GstTask object but other objects might be added in the future.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the object controlling the streaming</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="mini_object">
+        <type name="MiniObject" c:type="GstMiniObject"/>
+      </field>
+      <field name="lock" readable="0" private="1">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="cond" readable="0" private="1">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="type">
+        <type name="MessageType" c:type="GstMessageType"/>
+      </field>
+      <field name="timestamp">
+        <type name="guint64" c:type="guint64"/>
+      </field>
+      <field name="src">
+        <type name="Object" c:type="GstObject*"/>
+      </field>
+      <field name="structure">
+        <type name="Structure" c:type="GstStructure*"/>
+      </field>
+      <union name="abidata" c:type="abidata">
+        <record name="ABI" c:type="ABI">
+          <field name="seqnum" writable="1">
+            <type name="guint32" c:type="guint32"/>
+          </field>
+        </record>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </field>
+      </union>
+    </class>
+    <record name="MessageClass"
+            c:type="GstMessageClass"
+            glib:is-gtype-struct-for="Message">
+      <field name="mini_object_class">
+        <type name="MiniObjectClass" c:type="GstMiniObjectClass"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="MessageType" c:type="GstMessageType">
+      <doc xml:whitespace="preserve">The different message types that are available.</doc>
+      <member name="unknown" value="0" c:identifier="GST_MESSAGE_UNKNOWN"/>
+      <member name="eos" value="1" c:identifier="GST_MESSAGE_EOS"/>
+      <member name="error" value="2" c:identifier="GST_MESSAGE_ERROR"/>
+      <member name="warning" value="4" c:identifier="GST_MESSAGE_WARNING"/>
+      <member name="info" value="8" c:identifier="GST_MESSAGE_INFO"/>
+      <member name="tag" value="16" c:identifier="GST_MESSAGE_TAG"/>
+      <member name="buffering"
+              value="32"
+              c:identifier="GST_MESSAGE_BUFFERING"/>
+      <member name="state_changed"
+              value="64"
+              c:identifier="GST_MESSAGE_STATE_CHANGED"/>
+      <member name="state_dirty"
+              value="128"
+              c:identifier="GST_MESSAGE_STATE_DIRTY"/>
+      <member name="step_done"
+              value="256"
+              c:identifier="GST_MESSAGE_STEP_DONE"/>
+      <member name="clock_provide"
+              value="512"
+              c:identifier="GST_MESSAGE_CLOCK_PROVIDE"/>
+      <member name="clock_lost"
+              value="1024"
+              c:identifier="GST_MESSAGE_CLOCK_LOST"/>
+      <member name="new_clock"
+              value="2048"
+              c:identifier="GST_MESSAGE_NEW_CLOCK"/>
+      <member name="structure_change"
+              value="4096"
+              c:identifier="GST_MESSAGE_STRUCTURE_CHANGE"/>
+      <member name="stream_status"
+              value="8192"
+              c:identifier="GST_MESSAGE_STREAM_STATUS"/>
+      <member name="application"
+              value="16384"
+              c:identifier="GST_MESSAGE_APPLICATION"/>
+      <member name="element" value="32768" c:identifier="GST_MESSAGE_ELEMENT"/>
+      <member name="segment_start"
+              value="65536"
+              c:identifier="GST_MESSAGE_SEGMENT_START"/>
+      <member name="segment_done"
+              value="131072"
+              c:identifier="GST_MESSAGE_SEGMENT_DONE"/>
+      <member name="duration"
+              value="262144"
+              c:identifier="GST_MESSAGE_DURATION"/>
+      <member name="latency"
+              value="524288"
+              c:identifier="GST_MESSAGE_LATENCY"/>
+      <member name="async_start"
+              value="1048576"
+              c:identifier="GST_MESSAGE_ASYNC_START"/>
+      <member name="async_done"
+              value="2097152"
+              c:identifier="GST_MESSAGE_ASYNC_DONE"/>
+      <member name="request_state"
+              value="4194304"
+              c:identifier="GST_MESSAGE_REQUEST_STATE"/>
+      <member name="step_start"
+              value="8388608"
+              c:identifier="GST_MESSAGE_STEP_START"/>
+      <member name="qos" value="16777216" c:identifier="GST_MESSAGE_QOS"/>
+      <member name="progress"
+              value="33554432"
+              c:identifier="GST_MESSAGE_PROGRESS"/>
+      <member name="any" value="-1" c:identifier="GST_MESSAGE_ANY"/>
+    </bitfield>
+    <class name="MiniObject"
+           c:symbol-prefix="mini_object"
+           c:type="GstMiniObject"
+           abstract="1"
+           glib:type-name="GstMiniObject"
+           glib:get-type="gst_mini_object_get_type"
+           glib:type-struct="MiniObjectClass"
+           glib:fundamental="1"
+           glib:ref-func="gst_mini_object_ref"
+           glib:unref-func="gst_mini_object_unref"
+           glib:set-value-func="gst_value_set_mini_object"
+           glib:get-value-func="gst_value_get_mini_object">
+      <doc xml:whitespace="preserve">#GstMiniObject is a baseclass like #GObject, but has been stripped down of
+features to be fast and small.
+It offers sub-classing and ref-counting in the same way as #GObject does.
+It has no properties and no signal-support though.
+Last reviewed on 2005-11-23 (0.9.5)</doc>
+      <constructor name="new" c:identifier="gst_mini_object_new">
+        <doc xml:whitespace="preserve">Creates a new mini-object of the desired type.
+MT safe</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new mini-object.</doc>
+          <type name="MiniObject" c:type="GstMiniObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GType of the mini-object to create</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="replace" c:identifier="gst_mini_object_replace">
+        <doc xml:whitespace="preserve">Modifies a pointer to point to a new mini-object.  The modification
+is done atomically, and the reference counts are updated correctly.
+Either @newdata and the value pointed to by @olddata may be NULL.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="olddata"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">pointer to a pointer to a mini-object to be replaced</doc>
+            <type name="MiniObject" c:type="GstMiniObject**"/>
+          </parameter>
+          <parameter name="newdata" transfer-ownership="none">
+            <doc xml:whitespace="preserve">pointer to new mini-object</doc>
+            <type name="MiniObject" c:type="GstMiniObject*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="copy" c:identifier="gst_mini_object_copy">
+        <doc xml:whitespace="preserve">Creates a copy of the mini-object.
+MT safe</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new mini-object.</doc>
+          <type name="MiniObject" c:type="GstMiniObject*"/>
+        </return-value>
+      </method>
+      <method name="is_writable" c:identifier="gst_mini_object_is_writable">
+        <doc xml:whitespace="preserve">Checks if a mini-object is writable.  A mini-object is writable
+if the reference count is one and the #GST_MINI_OBJECT_FLAG_READONLY
+flag is not set.  Modification of a mini-object should only be
+done after verifying that it is writable.
+MT safe</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the object is writable.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="make_writable"
+              c:identifier="gst_mini_object_make_writable">
+        <doc xml:whitespace="preserve">Checks if a mini-object is writable.  If not, a writable copy is made and
+returned.  This gives away the reference to the original mini object,
+and returns a reference to the new object.
+MT safe
+is writable.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a mini-object (possibly the same pointer) that</doc>
+          <type name="MiniObject" c:type="GstMiniObject*"/>
+        </return-value>
+      </method>
+      <method name="ref" c:identifier="gst_mini_object_ref">
+        <doc xml:whitespace="preserve">Increase the reference count of the mini-object.
+Note that the refcount affects the writeability
+of @mini-object, see gst_mini_object_is_writable(). It is
+important to note that keeping additional references to
+GstMiniObject instances can potentially increase the number
+of memcpy operations in a pipeline, especially if the miniobject
+is a #GstBuffer.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the mini-object.</doc>
+          <type name="MiniObject" c:type="GstMiniObject*"/>
+        </return-value>
+      </method>
+      <method name="unref" c:identifier="gst_mini_object_unref">
+        <doc xml:whitespace="preserve">Decreases the reference count of the mini-object, possibly freeing
+the mini-object.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <field name="instance">
+        <type name="GObject.TypeInstance" c:type="GTypeInstance"/>
+      </field>
+      <field name="refcount">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="flags">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+    </class>
+    <record name="MiniObjectClass"
+            c:type="GstMiniObjectClass"
+            glib:is-gtype-struct-for="MiniObject">
+      <field name="type_class">
+        <type name="GObject.TypeClass" c:type="GTypeClass"/>
+      </field>
+      <field name="copy" introspectable="0">
+        <type name="MiniObjectCopyFunction"
+              c:type="GstMiniObjectCopyFunction"/>
+      </field>
+      <field name="finalize">
+        <type name="MiniObjectFinalizeFunction"
+              c:type="GstMiniObjectFinalizeFunction"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+    </record>
+    <callback name="MiniObjectCopyFunction"
+              c:type="GstMiniObjectCopyFunction"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Virtual function prototype for methods to create copies of instances.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">reference to cloned instance.</doc>
+        <type name="MiniObject" c:type="GstMiniObject*"/>
+      </return-value>
+      <parameters>
+        <parameter name="obj" transfer-ownership="none">
+          <doc xml:whitespace="preserve">MiniObject to copy</doc>
+          <type name="MiniObject" c:type="GstMiniObject*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="MiniObjectFinalizeFunction"
+              c:type="GstMiniObjectFinalizeFunction">
+      <doc xml:whitespace="preserve">Virtual function prototype for methods to free ressources used by
+mini-objects. Subclasses of the mini object are allowed to revive the
+passed object by doing a gst_mini_object_ref(). If the object is not
+revived after the finalize function, the memory associated with the
+object is freed.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="obj" transfer-ownership="none">
+          <doc xml:whitespace="preserve">MiniObject to finalize</doc>
+          <type name="MiniObject" c:type="GstMiniObject*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="MiniObjectFlags" c:type="GstMiniObjectFlags">
+      <doc xml:whitespace="preserve">Flags for the mini object</doc>
+      <member name="readonly"
+              value="1"
+              c:identifier="GST_MINI_OBJECT_FLAG_READONLY"/>
+      <member name="reserved1"
+              value="2"
+              c:identifier="GST_MINI_OBJECT_FLAG_RESERVED1"/>
+      <member name="last" value="16" c:identifier="GST_MINI_OBJECT_FLAG_LAST"/>
+    </bitfield>
+    <constant name="NSECOND" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Object"
+           c:symbol-prefix="object"
+           c:type="GstObject"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="GstObject"
+           glib:get-type="gst_object_get_type"
+           glib:type-struct="ObjectClass">
+      <doc xml:whitespace="preserve">#GstObject provides a root for the object hierarchy tree filed in by the
+GStreamer library.  It is currently a thin wrapper on top of
+#GObject. It is an abstract class that is not very usable on its own.
+#GstObject gives us basic refcounting, parenting functionality and locking.
+Most of the function are just extended for special GStreamer needs and can be
+found under the same name in the base class of #GstObject which is #GObject
+(e.g. g_object_ref() becomes gst_object_ref()).
+The most interesting difference between #GstObject and #GObject is the
+"floating" reference count. A #GObject is created with a reference count of
+1, owned by the creator of the #GObject. (The owner of a reference is the
+code section that has the right to call gst_object_unref() in order to
+remove that reference.) A #GstObject is created with a reference count of 1
+also, but it isn't owned by anyone; Instead, the initial reference count
+of a #GstObject is "floating". The floating reference can be removed by
+anyone at any time, by calling gst_object_sink().  gst_object_sink() does
+nothing if an object is already sunk (has no floating reference).
+When you add a #GstElement to its parent container, the parent container will
+do this:
+&lt;informalexample&gt;
+&lt;programlisting&gt;
+gst_object_ref (GST_OBJECT (child_element));
+gst_object_sink (GST_OBJECT (child_element));
+&lt;/programlisting&gt;
+&lt;/informalexample&gt;
+This means that the container now owns a reference to the child element
+(since it called gst_object_ref()), and the child element has no floating
+reference.
+The purpose of the floating reference is to keep the child element alive
+until you add it to a parent container, which then manages the lifetime of
+the object itself:
+&lt;informalexample&gt;
+&lt;programlisting&gt;
+element = gst_element_factory_make (factoryname, name);
+// element has one floating reference to keep it alive
+gst_bin_add (GST_BIN (bin), element);
+// element has one non-floating reference owned by the container
+&lt;/programlisting&gt;
+&lt;/informalexample&gt;
+Another effect of this is, that calling gst_object_unref() on a bin object,
+will also destoy all the #GstElement objects in it. The same is true for
+calling gst_bin_remove().
+Special care has to be taken for all methods that gst_object_sink() an object
+since if the caller of those functions had a floating reference to the object,
+the object reference is now invalid.
+In contrast to #GObject instances, #GstObject adds a name property. The functions
+gst_object_set_name() and gst_object_get_name() are used to set/get the name
+of the object.
+Last reviewed on 2005-11-09 (0.9.4)</doc>
+      <function name="check_uniqueness"
+                c:identifier="gst_object_check_uniqueness">
+        <doc xml:whitespace="preserve">Checks to see if there is any object named @name in @list. This function
+does not do any locking of any kind. You might want to protect the
+provided list with the lock of the owner of the list. This function
+will lock each #GstObject in the list to compare the name, so be
+carefull when passing a list with a locked object.
+FALSE if it does.
+MT safe. Grabs and releases the LOCK of each object in the list.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if a #GstObject named @name does not appear in @list,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a list of #GstObject to check through</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="Object"/>
+            </type>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name to search for</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="default_deep_notify"
+                c:identifier="gst_object_default_deep_notify">
+        <doc xml:whitespace="preserve">A default deep_notify signal callback for an object. The user data
+should contain a pointer to an array of strings that should be excluded
+from the notify. The default handler will print the new value of the property
+using g_print.
+MT safe. This function grabs and releases @object's LOCK for getting its
+path string.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GObject that signalled the notify.</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="orig" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstObject that initiated the notify.</doc>
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="pspec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GParamSpec of the property.</doc>
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+          <parameter name="excluded_props" transfer-ownership="none">
+            <doc xml:whitespace="preserve">(array zero-terminated=1) (element-type gchar*) (allow-none):a set of user-specified properties to exclude or NULL to show all changes.</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="ref" c:identifier="gst_object_ref">
+        <doc xml:whitespace="preserve">Increments the reference count on @object. This function
+does not take the lock on @object because it relies on
+atomic refcounting.
+This object returns the input parameter to ease writing
+constructs like :
+result = gst_object_ref (object-&gt;parent);</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A pointer to @object</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstObject to reference</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="ref_sink"
+                c:identifier="gst_object_ref_sink"
+                version="0.10.24">
+        <doc xml:whitespace="preserve">Increase the reference count of @object, and possibly remove the floating
+reference, if @object has a floating reference.
+In other words, if the object is floating, then this call "assumes ownership"
+of the floating reference, converting it to a normal reference by clearing
+the floating flag while leaving the reference count unchanged. If the object
+is not floating, then this call adds a new normal reference increasing the
+reference count by one.
+MT safe. This function grabs and releases @object lock.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstObject to sink</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="replace" c:identifier="gst_object_replace">
+        <doc xml:whitespace="preserve">Unrefs the #GstObject pointed to by @oldobj, refs @newobj and
+puts @newobj in *@oldobj. Be carefull when calling this
+function, it does not take any locks. You might want to lock
+the object owning @oldobj pointer before calling this
+function.
+Make sure not to LOCK @oldobj because it might be unreffed
+which could cause a deadlock when it is disposed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="oldobj"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">pointer to a place of a #GstObject to replace</doc>
+            <type name="Object" c:type="GstObject**"/>
+          </parameter>
+          <parameter name="newobj" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a new #GstObject</doc>
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="sink" c:identifier="gst_object_sink">
+        <doc xml:whitespace="preserve">If @object was floating, the #GST_OBJECT_FLOATING flag is removed
+and @object is unreffed. When @object was not floating,
+this function does nothing.
+Any newly created object has a refcount of 1 and is floating.
+This function should be used when creating a new object to
+symbolically 'take ownership' of @object. This done by first doing a
+gst_object_ref() to keep a reference to @object and then gst_object_sink()
+to remove and unref any floating references to @object.
+Use gst_object_set_parent() to have this done for you.
+MT safe. This function grabs and releases @object lock.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstObject to sink</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="unref" c:identifier="gst_object_unref">
+        <doc xml:whitespace="preserve">Decrements the reference count on @object.  If reference count hits
+zero, destroy @object. This function does not take the lock
+on @object as it relies on atomic refcounting.
+The unref method should never be called with the LOCK held since
+this might deadlock the dispose function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstObject to unreference</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="deep_notify">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="orig" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="pspec" transfer-ownership="none">
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="object_saved">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="parent_set">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="parent_unset">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="restore_thyself" invoker="restore_thyself">
+        <doc xml:whitespace="preserve">Restores @object with the data from the parent XML node.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="self" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The XML node to load @object from</doc>
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="save_thyself"
+                      invoker="save_thyself"
+                      introspectable="0">
+        <doc xml:whitespace="preserve">Saves @object into the parent XML node.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the new xmlNodePtr with the saved object</doc>
+          <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The parent XML node to save @object into</doc>
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="default_error" c:identifier="gst_object_default_error">
+        <doc xml:whitespace="preserve">A default error function.
+The default handler will simply print the error string using g_print.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="error" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the GError.</doc>
+            <type name="GLib.Error" c:type="GError*"/>
+          </parameter>
+          <parameter name="debug" transfer-ownership="none" allow-none="1">
+            <doc xml:whitespace="preserve">an additional debug information string, or NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_name" c:identifier="gst_object_get_name">
+        <doc xml:whitespace="preserve">Returns a copy of the name of @object.
+Caller should g_free() the return value after usage.
+For a nameless object, this returns NULL, which you can safely g_free()
+as well.
+MT safe. This function grabs and releases @object's LOCK.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the name of @object. g_free() after usage.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_name_prefix"
+              c:identifier="gst_object_get_name_prefix"
+              deprecated="deprecated because the name prefix has never actually been used">
+        <doc xml:whitespace="preserve">Returns a copy of the name prefix of @object.
+Caller should g_free() the return value after usage.
+For a prefixless object, this returns NULL, which you can safely g_free()
+as well.
+MT safe. This function grabs and releases @object's LOCK.
+for anything.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the name prefix of @object. g_free() after usage.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_parent" c:identifier="gst_object_get_parent">
+        <doc xml:whitespace="preserve">Returns the parent of @object. This function increases the refcount
+of the parent object so you should gst_object_unref() it after usage.
+has no parent. unref after usage.
+MT safe. Grabs and releases @object's LOCK.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">parent of @object, this can be NULL if @object</doc>
+          <type name="Object" c:type="GstObject*"/>
+        </return-value>
+      </method>
+      <method name="get_path_string" c:identifier="gst_object_get_path_string">
+        <doc xml:whitespace="preserve">Generates a string describing the path of @object in
+the object hierarchy. Only useful (or used) for debugging.
+g_free() the string after usage.
+MT safe. Grabs and releases the #GstObject's LOCK for all objects
+in the hierarchy.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a string describing the path of @object. You must</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="has_ancestor" c:identifier="gst_object_has_ancestor">
+        <doc xml:whitespace="preserve">Check if @object has an ancestor @ancestor somewhere up in
+the hierarchy. One can e.g. check if a #GstElement is inside a #GstPipeline.
+MT safe. Grabs and releases @object's locks.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if @ancestor is an ancestor of @object.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="ancestor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstObject to check as ancestor</doc>
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="restore_thyself" c:identifier="gst_object_restore_thyself">
+        <doc xml:whitespace="preserve">Restores @object with the data from the parent XML node.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="self" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The XML node to load @object from</doc>
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="save_thyself"
+              c:identifier="gst_object_save_thyself"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Saves @object into the parent XML node.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the new xmlNodePtr with the saved object</doc>
+          <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The parent XML node to save @object into</doc>
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_name" c:identifier="gst_object_set_name">
+        <doc xml:whitespace="preserve">Sets the name of @object, or gives @object a guaranteed unique
+name (if @name is NULL).
+This function makes a copy of the provided name, so the caller
+retains ownership of the name it sent.
+a parent cannot be renamed, this function returns FALSE in those
+cases.
+MT safe.  This function grabs and releases @object's LOCK.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the name could be set. Since Objects that have</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new name of object</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_name_prefix"
+              c:identifier="gst_object_set_name_prefix"
+              deprecated="deprecated because the name prefix has never actually been used">
+        <doc xml:whitespace="preserve">Sets the name prefix of @object to @name_prefix.
+This function makes a copy of the provided name prefix, so the caller
+retains ownership of the name prefix it sent.
+MT safe.  This function grabs and releases @object's LOCK.
+for anything.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name_prefix" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new name prefix of @object</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_parent" c:identifier="gst_object_set_parent">
+        <doc xml:whitespace="preserve">Sets the parent of @object to @parent. The object's reference count will
+be incremented, and any floating reference will be removed (see gst_object_sink()).
+This function causes the parent-set signal to be emitted when the parent
+was successfully set.
+already had a parent or @object and @parent are the same.
+MT safe. Grabs and releases @object's LOCK.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if @parent could be set or FALSE when @object</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new parent of object</doc>
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unparent" c:identifier="gst_object_unparent">
+        <doc xml:whitespace="preserve">Clear the parent of @object, removing the associated reference.
+This function decreases the refcount of @object.
+MT safe. Grabs and releases @object's lock.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="name"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="refcount">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="lock">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="name">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="name_prefix">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="parent">
+        <type name="Object" c:type="GstObject*"/>
+      </field>
+      <field name="flags">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <glib:signal name="deep-notify" introspectable="0">
+        <doc xml:whitespace="preserve">The deep notify signal is used to be notified of property changes. It is
+typically attached to the toplevel bin to receive notifications from all
+the elements contained in that bin.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="prop_object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the object that originated the signal</doc>
+            <type name="Object"/>
+          </parameter>
+          <parameter name="prop" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the property that changed</doc>
+            <type/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="object-saved">
+        <doc xml:whitespace="preserve">Trigered whenever a new object is saved to XML. You can connect to this
+signal to insert custom XML tags into the core XML.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="xml_node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the xmlNodePtr of the parent node</doc>
+            <type name="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="parent-set">
+        <doc xml:whitespace="preserve">Emitted when the parent of an object is set.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new parent</doc>
+            <type name="Object"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="parent-unset">
+        <doc xml:whitespace="preserve">Emitted when the parent of an object is unset.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the old parent</doc>
+            <type name="Object"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="ObjectClass"
+            c:type="GstObjectClass"
+            glib:is-gtype-struct-for="Object">
+      <doc xml:whitespace="preserve">GStreamer base object class.</doc>
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="path_string_separator">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="signal_object">
+        <type name="GObject.Object" c:type="GObject*"/>
+      </field>
+      <field name="lock">
+        <type name="GLib.StaticRecMutex" c:type="GStaticRecMutex*"/>
+      </field>
+      <field name="parent_set">
+        <callback name="parent_set">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+            <parameter name="parent" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="parent_unset">
+        <callback name="parent_unset">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+            <parameter name="parent" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="object_saved">
+        <callback name="object_saved">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+            <parameter name="parent" transfer-ownership="none">
+              <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="deep_notify">
+        <callback name="deep_notify">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+            <parameter name="orig" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+            <parameter name="pspec" transfer-ownership="none">
+              <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="save_thyself" introspectable="0">
+        <callback name="save_thyself" introspectable="0">
+          <return-value>
+            <doc xml:whitespace="preserve">the new xmlNodePtr with the saved object</doc>
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+            <parameter name="parent" transfer-ownership="none">
+              <doc xml:whitespace="preserve">The parent XML node to save @object into</doc>
+              <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="restore_thyself">
+        <callback name="restore_thyself">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+            <parameter name="self" transfer-ownership="none">
+              <doc xml:whitespace="preserve">The XML node to load @object from</doc>
+              <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="ObjectFlags" c:type="GstObjectFlags">
+      <doc xml:whitespace="preserve">The standard flags that an gstobject may have.</doc>
+      <member name="disposing" value="1" c:identifier="GST_OBJECT_DISPOSING"/>
+      <member name="floating" value="2" c:identifier="GST_OBJECT_FLOATING"/>
+      <member name="flag_last" value="16" c:identifier="GST_OBJECT_FLAG_LAST"/>
+    </bitfield>
+    <constant name="PAD_LINK_CHECK_DEFAULT" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PARAM_CONTROLLABLE" value="2">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PARAM_MUTABLE_PAUSED" value="8">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PARAM_MUTABLE_PLAYING" value="16">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PARAM_MUTABLE_READY" value="4">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="PARAM_USER_SHIFT" value="256">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="Pad"
+           c:symbol-prefix="pad"
+           c:type="GstPad"
+           parent="Object"
+           glib:type-name="GstPad"
+           glib:get-type="gst_pad_get_type"
+           glib:type-struct="PadClass">
+      <doc xml:whitespace="preserve">A #GstElement is linked to other elements via "pads", which are extremely
+light-weight generic link points.
+After two pads are retrieved from an element with gst_element_get_pad(),
+the pads can be link with gst_pad_link(). (For quick links,
+you can also use gst_element_link(), which will make the obvious
+link for you if it's straightforward.)
+Pads are typically created from a #GstPadTemplate with
+gst_pad_new_from_template().
+Pads have #GstCaps attached to it to describe the media type they are
+capable of dealing with.  gst_pad_get_caps() and gst_pad_set_caps() are
+used to manipulate the caps of the pads.
+Pads created from a pad template cannot set capabilities that are
+incompatible with the pad template capabilities.
+Pads without pad templates can be created with gst_pad_new(),
+which takes a direction and a name as an argument.  If the name is NULL,
+then a guaranteed unique name will be assigned to it.
+gst_pad_get_parent() will retrieve the #GstElement that owns the pad.
+A #GstElement creating a pad will typically use the various
+gst_pad_set_*_function() calls to register callbacks for various events
+on the pads.
+GstElements will use gst_pad_push() and gst_pad_pull_range() to push out
+or pull in a buffer.
+To send a #GstEvent on a pad, use gst_pad_send_event() and
+gst_pad_push_event().
+Last reviewed on 2006-07-06 (0.10.9)</doc>
+      <constructor name="new" c:identifier="gst_pad_new">
+        <doc xml:whitespace="preserve">Creates a new pad with the given name in the given direction.
+If name is NULL, a guaranteed unique name (across all pads)
+will be assigned.
+This function makes a copy of the name so you can safely free the name.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstPad, or NULL in case of an error.</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the new pad.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="direction" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstPadDirection of the pad.</doc>
+            <type name="PadDirection" c:type="GstPadDirection"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_static_template"
+                   c:identifier="gst_pad_new_from_static_template">
+        <doc xml:whitespace="preserve">Creates a new pad with the given name from the given static template.
+If name is NULL, a guaranteed unique name (across all pads)
+will be assigned.
+This function makes a copy of the name so you can safely free the name.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstPad, or NULL in case of an error.</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="templ" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstStaticPadTemplate to use</doc>
+            <type name="StaticPadTemplate" c:type="GstStaticPadTemplate*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the element</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_template"
+                   c:identifier="gst_pad_new_from_template">
+        <doc xml:whitespace="preserve">Creates a new pad with the given name from the given template.
+If name is NULL, a guaranteed unique name (across all pads)
+will be assigned.
+This function makes a copy of the name so you can safely free the name.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstPad, or NULL in case of an error.</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="templ" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the pad template to use</doc>
+            <type name="PadTemplate" c:type="GstPadTemplate*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the element</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="load_and_link" c:identifier="gst_pad_load_and_link">
+        <doc xml:whitespace="preserve">Reads the pad definition from the XML node and links the given pad
+in the element to a pad of an element up in the hierarchy.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="self" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an #xmlNodePtr to read the description from.</doc>
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+          <parameter name="parent" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstObject element that owns the pad.</doc>
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="have_data">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="MiniObject" c:type="GstMiniObject*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="linked">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="peer" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="request_link">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="unlinked">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="peer" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="accept_caps" c:identifier="gst_pad_accept_caps">
+        <doc xml:whitespace="preserve">Check if the given pad accepts the caps.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the pad can accept the caps.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstCaps to check on the pad</doc>
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="activate_pull" c:identifier="gst_pad_activate_pull">
+        <doc xml:whitespace="preserve">Activates or deactivates the given pad in pull mode via dispatching to the
+pad's activatepullfunc. For use from within pad activation functions only.
+When called on sink pads, will first proxy the call to the peer pad, which
+is expected to activate its internally linked pads from within its
+activate_pull function.
+If you don't know what this is, you probably don't want to call it.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the operation was successful.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="active" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether or not the pad should be active.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="activate_push" c:identifier="gst_pad_activate_push">
+        <doc xml:whitespace="preserve">Activates or deactivates the given pad in push mode via dispatching to the
+pad's activatepushfunc. For use from within pad activation functions only.
+If you don't know what this is, you probably don't want to call it.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the operation was successful.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="active" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether the pad should be active or not.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_buffer_probe"
+              c:identifier="gst_pad_add_buffer_probe"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Adds a probe that will be called for all buffers passing through a pad. See
+gst_pad_add_data_probe() for more information.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The handler id</doc>
+          <type name="gulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler" transfer-ownership="none" closure="1">
+            <doc xml:whitespace="preserve">function to call when buffers are passed over pad</doc>
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to pass along with the handler</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_buffer_probe_full"
+              c:identifier="gst_pad_add_buffer_probe_full"
+              version="0.10.20">
+        <doc xml:whitespace="preserve">Adds a probe that will be called for all buffers passing through a pad. See
+gst_pad_add_data_probe() for more information.
+The @notify function is called when the probe is disconnected and usually
+used to free @data.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The handler id</doc>
+          <type name="gulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="1"
+                     destroy="2">
+            <doc xml:whitespace="preserve">function to call when buffer are passed over pad</doc>
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to pass along with the handler</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="async">
+            <doc xml:whitespace="preserve">function to call when the probe is disconnected, or NULL</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_data_probe"
+              c:identifier="gst_pad_add_data_probe"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Adds a "data probe" to a pad. This function will be called whenever data
+passes through a pad. In this case data means both events and buffers. The
+probe will be called with the data as an argument, meaning @handler should
+have the same callback signature as the #GstPad::have-data signal.
+Note that the data will have a reference count greater than 1, so it will
+be immutable -- you must not change it.
+For source pads, the probe will be called after the blocking function, if any
+(see gst_pad_set_blocked_async()), but before looking up the peer to chain
+to. For sink pads, the probe function will be called before configuring the
+sink with new caps, if any, and before calling the pad's chain function.
+Your data probe should return TRUE to let the data continue to flow, or FALSE
+to drop it. Dropping data is rarely useful, but occasionally comes in handy
+with events.
+Although probes are implemented internally by connecting @handler to the
+have-data signal on the pad, if you want to remove a probe it is insufficient
+to only call g_signal_handler_disconnect on the returned handler id. To
+remove a probe, use the appropriate function, such as
+gst_pad_remove_data_probe().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The handler id.</doc>
+          <type name="gulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler" transfer-ownership="none" closure="1">
+            <doc xml:whitespace="preserve">function to call when data is passed over pad</doc>
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to pass along with the handler</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_data_probe_full"
+              c:identifier="gst_pad_add_data_probe_full"
+              version="0.10.20">
+        <doc xml:whitespace="preserve">Adds a "data probe" to a pad. This function will be called whenever data
+passes through a pad. In this case data means both events and buffers. The
+probe will be called with the data as an argument, meaning @handler should
+have the same callback signature as the #GstPad::have-data signal.
+Note that the data will have a reference count greater than 1, so it will
+be immutable -- you must not change it.
+For source pads, the probe will be called after the blocking function, if any
+(see gst_pad_set_blocked_async()), but before looking up the peer to chain
+to. For sink pads, the probe function will be called before configuring the
+sink with new caps, if any, and before calling the pad's chain function.
+Your data probe should return TRUE to let the data continue to flow, or FALSE
+to drop it. Dropping data is rarely useful, but occasionally comes in handy
+with events.
+Although probes are implemented internally by connecting @handler to the
+have-data signal on the pad, if you want to remove a probe it is insufficient
+to only call g_signal_handler_disconnect on the returned handler id. To
+remove a probe, use the appropriate function, such as
+gst_pad_remove_data_probe().
+The @notify function is called when the probe is disconnected and usually
+used to free @data.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The handler id.</doc>
+          <type name="gulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="1"
+                     destroy="2">
+            <doc xml:whitespace="preserve">function to call when data is passed over pad</doc>
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to pass along with the handler</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="async">
+            <doc xml:whitespace="preserve">function to call when the probe is disconnected, or NULL</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_event_probe"
+              c:identifier="gst_pad_add_event_probe"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Adds a probe that will be called for all events passing through a pad. See
+gst_pad_add_data_probe() for more information.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The handler id</doc>
+          <type name="gulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler" transfer-ownership="none" closure="1">
+            <doc xml:whitespace="preserve">function to call when events are passed over pad</doc>
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to pass along with the handler</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_event_probe_full"
+              c:identifier="gst_pad_add_event_probe_full"
+              version="0.10.20">
+        <doc xml:whitespace="preserve">Adds a probe that will be called for all events passing through a pad. See
+gst_pad_add_data_probe() for more information.
+The @notify function is called when the probe is disconnected and usually
+used to free @data.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The handler id</doc>
+          <type name="gulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="1"
+                     destroy="2">
+            <doc xml:whitespace="preserve">function to call when events are passed over pad</doc>
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to pass along with the handler, or NULL</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="async">
+            <doc xml:whitespace="preserve">function to call when probe is disconnected, or NULL</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="alloc_buffer" c:identifier="gst_pad_alloc_buffer">
+        <doc xml:whitespace="preserve">Allocates a new, empty buffer optimized to push to pad @pad.  This
+function only works if @pad is a source pad and has a peer.
+A new, empty #GstBuffer will be put in the @buf argument.
+You need to check the caps of the buffer after performing this
+function and renegotiate to the format if needed. If the caps changed, it is
+possible that the buffer returned in @buf is not of the right size for the
+new format, @buf needs to be unreffed and reallocated if this is the case.
+result code other than #GST_FLOW_OK is an error and @buf should
+not be used.
+An error can occur if the pad is not connected or when the downstream
+peer elements cannot provide an acceptable buffer.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a result code indicating success of the operation. Any</doc>
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the offset of the new buffer in the stream</doc>
+            <type name="guint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the size of the new buffer</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the caps of the new buffer</doc>
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+          <parameter name="buf" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a newly allocated buffer</doc>
+            <type name="Buffer" c:type="GstBuffer**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="alloc_buffer_and_set_caps"
+              c:identifier="gst_pad_alloc_buffer_and_set_caps">
+        <doc xml:whitespace="preserve">In addition to the function gst_pad_alloc_buffer(), this function
+automatically calls gst_pad_set_caps() when the caps of the
+newly allocated buffer are different from the @pad caps.
+After a renegotiation, the size of the new buffer returned in @buf could
+be of the wrong size for the new format and must be unreffed an reallocated
+in that case.
+result code other than #GST_FLOW_OK is an error and @buf should
+not be used.
+An error can occur if the pad is not connected or when the downstream
+peer elements cannot provide an acceptable buffer.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a result code indicating success of the operation. Any</doc>
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the offset of the new buffer in the stream</doc>
+            <type name="guint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the size of the new buffer</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the caps of the new buffer</doc>
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+          <parameter name="buf"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">a newly allocated buffer</doc>
+            <type name="Buffer" c:type="GstBuffer**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="can_link" c:identifier="gst_pad_can_link">
+        <doc xml:whitespace="preserve">Checks if the source pad and the sink pad are compatible so they can be
+linked.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the pads can be linked.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="sinkpad" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the sink #GstPad.</doc>
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="chain" c:identifier="gst_pad_chain">
+        <doc xml:whitespace="preserve">Chain a buffer to @pad.
+The function returns #GST_FLOW_WRONG_STATE if the pad was flushing.
+If the caps on @buffer are different from the current caps on @pad, this
+function will call any setcaps function (see gst_pad_set_setcaps_function())
+installed on @pad. If the new caps are not acceptable for @pad, this
+function returns #GST_FLOW_NOT_NEGOTIATED.
+The function proceeds calling the chain function installed on @pad (see
+gst_pad_set_chain_function()) and the return value of that function is
+returned to the caller. #GST_FLOW_NOT_SUPPORTED is returned if @pad has no
+chain function.
+In all cases, success or failure, the caller loses its reference to @buffer
+after calling this function.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GstFlowReturn from the pad.</doc>
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="full">
+            <doc xml:whitespace="preserve">the #GstBuffer to send, return GST_FLOW_ERROR if not.</doc>
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="chain_list"
+              c:identifier="gst_pad_chain_list"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Chain a bufferlist to @pad.
+The function returns #GST_FLOW_WRONG_STATE if the pad was flushing.
+If the caps on the first buffer of @list are different from the current
+caps on @pad, this function will call any setcaps function
+(see gst_pad_set_setcaps_function()) installed on @pad. If the new caps
+are not acceptable for @pad, this function returns #GST_FLOW_NOT_NEGOTIATED.
+The function proceeds calling the chainlist function installed on @pad (see
+gst_pad_set_chain_list_function()) and the return value of that function is
+returned to the caller. #GST_FLOW_NOT_SUPPORTED is returned if @pad has no
+chainlist function.
+In all cases, success or failure, the caller loses its reference to @list
+after calling this function.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GstFlowReturn from the pad.</doc>
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="full">
+            <doc xml:whitespace="preserve">the #GstBufferList to send, return GST_FLOW_ERROR if not.</doc>
+            <type name="BufferList" c:type="GstBufferList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="check_pull_range" c:identifier="gst_pad_check_pull_range">
+        <doc xml:whitespace="preserve">Checks if a gst_pad_pull_range() can be performed on the peer
+source pad. This function is used by plugins that want to check
+if they can use random access on the peer source pad.
+The peer sourcepad can implement a custom #GstPadCheckGetRangeFunction
+if it needs to perform some logic to determine if pull_range is
+possible.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a gboolean with the result.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="dispatcher"
+              c:identifier="gst_pad_dispatcher"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Invokes the given dispatcher function on each respective peer of
+all pads that are internally linked to the given pad.
+The GstPadDispatcherFunction should return TRUE when no further pads
+need to be processed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if one of the dispatcher functions returned TRUE.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="dispatch" transfer-ownership="none" closure="1">
+            <doc xml:whitespace="preserve">the #GstPadDispatcherFunction to call.</doc>
+            <type name="PadDispatcherFunction"
+                  c:type="GstPadDispatcherFunction"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">gpointer user data passed to the dispatcher function.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="event_default" c:identifier="gst_pad_event_default">
+        <doc xml:whitespace="preserve">Invokes the default event handler for the given pad. End-of-stream and
+discontinuity events are handled specially, and then the event is sent to all
+pads internally linked to @pad. Note that if there are many possible sink
+pads that are internally linked to @pad, only one will be sent an event.
+Multi-sinkpad elements should implement custom event handlers.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the event was sent succesfully.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="full">
+            <doc xml:whitespace="preserve">the #GstEvent to handle.</doc>
+            <type name="Event" c:type="GstEvent*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fixate_caps" c:identifier="gst_pad_fixate_caps">
+        <doc xml:whitespace="preserve">Fixate a caps on the given pad. Modifies the caps in place, so you should
+make sure that the caps are actually writable (see gst_caps_make_writable()).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the  #GstCaps to fixate</doc>
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_allowed_caps" c:identifier="gst_pad_get_allowed_caps">
+        <doc xml:whitespace="preserve">Gets the capabilities of the allowed media types that can flow through
+The allowed capabilities is calculated as the intersection of the results of
+calling gst_pad_get_caps() on @pad and its peer. The caller owns a reference
+on the resulting caps.
+caps when you no longer need it. This function returns NULL when @pad
+has no peer.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the allowed #GstCaps of the pad link. Unref the</doc>
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="get_caps" c:identifier="gst_pad_get_caps">
+        <doc xml:whitespace="preserve">Gets the capabilities this pad can produce or consume.
+Note that this method doesn't necessarily return the caps set by
+gst_pad_set_caps() - use GST_PAD_CAPS() for that instead.
+gst_pad_get_caps returns all possible caps a pad can operate with, using
+the pad's get_caps function;
+this returns the pad template caps if not explicitly set.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated copy of the #GstCaps of this pad</doc>
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="get_caps_reffed"
+              c:identifier="gst_pad_get_caps_reffed"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Gets the capabilities this pad can produce or consume. Preferred function if
+one only wants to read or intersect the caps.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the caps of the pad with incremented ref-count.</doc>
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="get_direction" c:identifier="gst_pad_get_direction">
+        <doc xml:whitespace="preserve">Gets the direction of the pad. The direction of the pad is
+decided at construction time so this function does not take
+the LOCK.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstPadDirection of the pad.</doc>
+          <type name="PadDirection" c:type="GstPadDirection"/>
+        </return-value>
+      </method>
+      <method name="get_element_private"
+              c:identifier="gst_pad_get_element_private">
+        <doc xml:whitespace="preserve">Gets the private data of a pad.
+No locking is performed in this function.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #gpointer to the private data.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="get_fixed_caps_func"
+              c:identifier="gst_pad_get_fixed_caps_func">
+        <doc xml:whitespace="preserve">A helper function you can use as a GetCaps function that
+will return the currently negotiated caps or the padtemplate
+when NULL.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the currently negotiated caps or the padtemplate.</doc>
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="get_internal_links"
+              c:identifier="gst_pad_get_internal_links"
+              deprecated="This function does not ref the pads in the list so that they">
+        <doc xml:whitespace="preserve">Gets a list of pads to which the given pad is linked to
+inside of the parent element.
+The caller must free this list after use.
+Not MT safe.
+of pads, free with g_list_free().
+could become invalid by the time the application accesses them. It's also
+possible that the list changes while handling the pads, which the caller of
+this function is unable to know. Use the thread-safe 
+gst_pad_iterate_internal_links() instead.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated #GList</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="Pad"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_internal_links_default"
+              c:identifier="gst_pad_get_internal_links_default"
+              deprecated="This function does not ref the pads in the list so that they">
+        <doc xml:whitespace="preserve">Gets a list of pads to which the given pad is linked to
+inside of the parent element.
+This is the default handler, and thus returns a list of all of the
+pads inside the parent element with opposite direction.
+The caller must free this list after use with g_list_free().
+of pads, or NULL if the pad has no parent.
+Not MT safe.
+could become invalid by the time the application accesses them. It's also
+possible that the list changes while handling the pads, which the caller of
+this function is unable to know. Use the thread-safe 
+gst_pad_iterate_internal_links_default() instead.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated #GList</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="Pad"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_negotiated_caps"
+              c:identifier="gst_pad_get_negotiated_caps">
+        <doc xml:whitespace="preserve">Gets the capabilities of the media type that currently flows through @pad
+and its peer.
+This function can be used on both src and sinkpads. Note that srcpads are
+always negotiated before sinkpads so it is possible that the negotiated caps
+on the srcpad do not match the negotiated caps of the peer.
+the caps when you no longer need it. This function returns NULL when
+the @pad has no peer or is not negotiated yet.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the negotiated #GstCaps of the pad link. Unref</doc>
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="get_pad_template" c:identifier="gst_pad_get_pad_template">
+        <doc xml:whitespace="preserve">Gets the template for @pad.
+instantiated, or %NULL if this pad has no template.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstPadTemplate from which this pad was</doc>
+          <type name="PadTemplate" c:type="GstPadTemplate*"/>
+        </return-value>
+      </method>
+      <method name="get_pad_template_caps"
+              c:identifier="gst_pad_get_pad_template_caps">
+        <doc xml:whitespace="preserve">Gets the capabilities for @pad's template.
+to keep a reference on the caps, make a copy (see gst_caps_copy ()).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstCaps of this pad template. If you intend</doc>
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="get_parent_element"
+              c:identifier="gst_pad_get_parent_element">
+        <doc xml:whitespace="preserve">Gets the parent of @pad, cast to a #GstElement. If a @pad has no parent or
+its parent is not an element, return NULL.
+reference on the parent, so unref when you're finished with it.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the parent of the pad. The caller has a</doc>
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+      </method>
+      <method name="get_peer" c:identifier="gst_pad_get_peer">
+        <doc xml:whitespace="preserve">Gets the peer of @pad. This function refs the peer pad so
+you need to unref it after use.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the peer #GstPad. Unref after usage.</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+      </method>
+      <method name="get_query_types" c:identifier="gst_pad_get_query_types">
+        <doc xml:whitespace="preserve">Get an array of supported queries that can be performed
+on this pad.
+of #GstQueryType.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a zero-terminated array</doc>
+          <array c:type="GstQueryType*">
+            <type name="QueryType" c:type="GstQueryType"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="get_query_types_default"
+              c:identifier="gst_pad_get_query_types_default">
+        <doc xml:whitespace="preserve">Invoke the default dispatcher for the query types on
+the pad.
+of #GstQueryType, or NULL if none of the internally-linked pads has a
+query types function.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a zero-terminated array</doc>
+          <array c:type="GstQueryType*">
+            <type name="QueryType" c:type="GstQueryType"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="get_range" c:identifier="gst_pad_get_range">
+        <doc xml:whitespace="preserve">When @pad is flushing this function returns #GST_FLOW_WRONG_STATE
+immediatly and @buffer is %NULL.
+Calls the getrange function of @pad, see #GstPadGetRangeFunction for a
+description of a getrange function. If @pad has no getrange function
+installed (see gst_pad_set_getrange_function()) this function returns
+#GST_FLOW_NOT_SUPPORTED.
+This is a lowlevel function. Usualy gst_pad_pull_range() is used.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GstFlowReturn from the pad.</doc>
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The start offset of the buffer</doc>
+            <type name="guint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The length of the buffer</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="buffer"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">a pointer to hold the #GstBuffer, returns #GST_FLOW_ERROR if %NULL.</doc>
+            <type name="Buffer" c:type="GstBuffer**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_active" c:identifier="gst_pad_is_active">
+        <doc xml:whitespace="preserve">Query if a pad is active
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the pad is active.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_blocked" c:identifier="gst_pad_is_blocked">
+        <doc xml:whitespace="preserve">Checks if the pad is blocked or not. This function returns the
+last requested state of the pad. It is not certain that the pad
+is actually blocking at this point (see gst_pad_is_blocking()).
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the pad is blocked.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_blocking"
+              c:identifier="gst_pad_is_blocking"
+              version="0.10.11">
+        <doc xml:whitespace="preserve">Checks if the pad is blocking or not. This is a guaranteed state
+of whether the pad is actually blocking on a #GstBuffer or a #GstEvent.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the pad is blocking.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_linked" c:identifier="gst_pad_is_linked">
+        <doc xml:whitespace="preserve">Checks if a @pad is linked to another pad or not.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the pad is linked, FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="iterate_internal_links"
+              c:identifier="gst_pad_iterate_internal_links"
+              version="0.10.21"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets an iterator for the pads to which the given pad is linked to inside
+of the parent element.
+Each #GstPad element yielded by the iterator will have its refcount increased,
+so unref after use.
+pad does not have an iterator function configured. Use
+gst_iterator_free() after usage.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstIterator of #GstPad or %NULL when the</doc>
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="iterate_internal_links_default"
+              c:identifier="gst_pad_iterate_internal_links_default"
+              version="0.10.21"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Iterate the list of pads to which the given pad is linked to inside of
+the parent element.
+This is the default handler, and thus returns an iterator of all of the
+pads inside the parent element with opposite direction.
+The caller must free this iterator after use with gst_iterator_free().
+returned pad with gst_object_unref().</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a #GstIterator of #GstPad, or NULL if @pad has no parent. Unref each</doc>
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="link" c:identifier="gst_pad_link">
+        <doc xml:whitespace="preserve">Links the source pad and the sink pad.
+what went wrong.
+MT Safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A result code indicating if the connection worked or</doc>
+          <type name="PadLinkReturn" c:type="GstPadLinkReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="sinkpad" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the sink #GstPad to link.</doc>
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="link_full"
+              c:identifier="gst_pad_link_full"
+              version="0.10.30">
+        <doc xml:whitespace="preserve">Links the source pad and the sink pad.
+This variant of #gst_pad_link provides a more granular control on the
+checks being done when linking. While providing some considerable speedups
+the caller of this method must be aware that wrong usage of those flags
+can cause severe issues. Refer to the documentation of #GstPadLinkCheck
+for more information.
+MT Safe.
+what went wrong.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A result code indicating if the connection worked or</doc>
+          <type name="PadLinkReturn" c:type="GstPadLinkReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="sinkpad" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the sink #GstPad to link.</doc>
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the checks to validate when linking</doc>
+            <type name="PadLinkCheck" c:type="GstPadLinkCheck"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pause_task" c:identifier="gst_pad_pause_task">
+        <doc xml:whitespace="preserve">Pause the task of @pad. This function will also wait until the
+function executed by the task is finished if this function is not
+called from the task function.
+has no task.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a TRUE if the task could be paused or FALSE when the pad</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="peer_accept_caps" c:identifier="gst_pad_peer_accept_caps">
+        <doc xml:whitespace="preserve">Check if the peer of @pad accepts @caps. If @pad has no peer, this function
+returns TRUE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the peer of @pad can accept the caps or @pad has no peer.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstCaps to check on the pad</doc>
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peer_get_caps" c:identifier="gst_pad_peer_get_caps">
+        <doc xml:whitespace="preserve">Gets the capabilities of the peer connected to this pad. Similar to
+gst_pad_get_caps().
+peer pad. Use gst_caps_unref() to get rid of it. This function
+returns %NULL if there is no peer pad.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly allocated copy of the #GstCaps of the</doc>
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="peer_get_caps_reffed"
+              c:identifier="gst_pad_peer_get_caps_reffed"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Gets the capabilities of the peer connected to this pad. Preferred function
+if one only wants to read or intersect the caps.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the caps of the pad with incremented ref-count</doc>
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="peer_query"
+              c:identifier="gst_pad_peer_query"
+              version="0.10.15">
+        <doc xml:whitespace="preserve">Performs gst_pad_query() on the peer of @pad.
+The caller is responsible for both the allocation and deallocation of
+the query structure.
+if @pad has no peer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the query could be performed. This function returns %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="query" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstQuery to perform.</doc>
+            <type name="Query" c:type="GstQuery*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="proxy_getcaps" c:identifier="gst_pad_proxy_getcaps">
+        <doc xml:whitespace="preserve">Calls gst_pad_get_allowed_caps() for every other pad belonging to the
+same element as @pad, and returns the intersection of the results.
+This function is useful as a default getcaps function for an element
+that can handle any stream format, but requires all its pads to have
+the same caps.  Two such elements are tee and adder.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the intersection of the other pads' allowed caps.</doc>
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="proxy_setcaps" c:identifier="gst_pad_proxy_setcaps">
+        <doc xml:whitespace="preserve">Calls gst_pad_set_caps() for every other pad belonging to the
+same element as @pad.  If gst_pad_set_caps() fails on any pad,
+the proxy setcaps fails. May be used only during negotiation.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if sucessful</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstCaps to link with</doc>
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pull_range" c:identifier="gst_pad_pull_range">
+        <doc xml:whitespace="preserve">Pulls a @buffer from the peer pad.
+This function will first trigger the pad block signal if it was
+installed.
+When @pad is not linked #GST_FLOW_NOT_LINKED is returned else this
+function returns the result of gst_pad_get_range() on the peer pad.
+See gst_pad_get_range() for a list of return values and for the
+semantics of the arguments of this function.
+configured on @pad. Renegotiation within a running pull-mode pipeline is not
+supported.
+When this function returns #GST_FLOW_OK, @buffer will contain a valid
+#GstBuffer that should be freed with gst_buffer_unref() after usage.
+#GST_FLOW_OK is returned.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GstFlowReturn from the peer pad.</doc>
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The start offset of the buffer</doc>
+            <type name="guint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The length of the buffer</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="buffer"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">a pointer to hold the #GstBuffer, returns GST_FLOW_ERROR if %NULL.</doc>
+            <type name="Buffer" c:type="GstBuffer**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="push" c:identifier="gst_pad_push">
+        <doc xml:whitespace="preserve">Pushes a buffer to the peer of @pad.
+This function will call an installed pad block before triggering any
+installed pad probes.
+If the caps on @buffer are different from the currently configured caps on
+gst_pad_set_setcaps_function()). In case of failure to renegotiate the new
+format, this function returns #GST_FLOW_NOT_NEGOTIATED.
+The function proceeds calling gst_pad_chain() on the peer pad and returns
+the value from that function. If @pad has no peer, #GST_FLOW_NOT_LINKED will
+be returned.
+In all cases, success or failure, the caller loses its reference to @buffer
+after calling this function.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GstFlowReturn from the peer pad.</doc>
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="full">
+            <doc xml:whitespace="preserve">the #GstBuffer to push returns GST_FLOW_ERROR if not.</doc>
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="push_event" c:identifier="gst_pad_push_event">
+        <doc xml:whitespace="preserve">Sends the event to the peer of the given pad. This function is
+mainly used by elements to send events to their peer
+elements.
+This function takes owership of the provided event so you should
+gst_event_ref() it if you want to reuse the event after this call.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the event was handled.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="full">
+            <doc xml:whitespace="preserve">the #GstEvent to send to the pad.</doc>
+            <type name="Event" c:type="GstEvent*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="push_list"
+              c:identifier="gst_pad_push_list"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Pushes a buffer list to the peer of @pad.
+This function will call an installed pad block before triggering any
+installed pad probes.
+If the caps on the first buffer in the first group of @list are different
+from the currently configured caps on @pad, this function will call any
+installed setcaps function on @pad (see gst_pad_set_setcaps_function()). In
+case of failure to renegotiate the new format, this function returns
+#GST_FLOW_NOT_NEGOTIATED.
+If there are any probes installed on @pad every group of the buffer list
+will be merged into a normal #GstBuffer and pushed via gst_pad_push and the
+buffer list will be unreffed.
+The function proceeds calling the chain function on the peer pad and returns
+the value from that function. If @pad has no peer, #GST_FLOW_NOT_LINKED will
+be returned. If the peer pad does not have any installed chainlist function
+every group buffer of the list will be merged into a normal #GstBuffer and
+chained via gst_pad_chain().
+In all cases, success or failure, the caller loses its reference to @list
+after calling this function.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GstFlowReturn from the peer pad.</doc>
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="full">
+            <doc xml:whitespace="preserve">the #GstBufferList to push returns GST_FLOW_ERROR if not.</doc>
+            <type name="BufferList" c:type="GstBufferList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query" c:identifier="gst_pad_query">
+        <doc xml:whitespace="preserve">Dispatches a query to a pad. The query should have been allocated by the
+caller via one of the type-specific allocation functions. The element that
+the pad belongs to is responsible for filling the query with an appropriate
+response, which should then be parsed with a type-specific query parsing
+function.
+Again, the caller is responsible for both the allocation and deallocation of
+the query structure.
+Please also note that some queries might need a running pipeline to work.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the query could be performed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="query" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstQuery to perform.</doc>
+            <type name="Query" c:type="GstQuery*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_convert" c:identifier="gst_pad_query_convert">
+        <doc xml:whitespace="preserve">Queries a pad to convert @src_val in @src_format to @dest_format.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the query could be performed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="src_format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstFormat to convert from.</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="src_val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a value to convert.</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="dest_format"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">a pointer to the #GstFormat to convert to.</doc>
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="dest_val"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">a pointer to the result.</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_default" c:identifier="gst_pad_query_default">
+        <doc xml:whitespace="preserve">Invokes the default query handler for the given pad.
+The query is sent to all pads internally linked to @pad. Note that
+if there are many possible sink pads that are internally linked to
+Multi-sinkpad elements should implement custom query handlers.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the query was performed succesfully.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="query" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstQuery to handle.</doc>
+            <type name="Query" c:type="GstQuery*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_duration" c:identifier="gst_pad_query_duration">
+        <doc xml:whitespace="preserve">Queries a pad for the total stream duration.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the query could be performed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">a pointer to the #GstFormat asked for. On return contains the #GstFormat used.</doc>
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="duration"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a location in which to store the total duration, or NULL.</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_peer_convert"
+              c:identifier="gst_pad_query_peer_convert">
+        <doc xml:whitespace="preserve">Queries the peer pad of a given sink pad to convert @src_val in @src_format
+to @dest_format.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the query could be performed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="src_format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstFormat to convert from.</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="src_val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a value to convert.</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="dest_format"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">a pointer to the #GstFormat to convert to.</doc>
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="dest_val"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">a pointer to the result.</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_peer_duration"
+              c:identifier="gst_pad_query_peer_duration">
+        <doc xml:whitespace="preserve">Queries the peer pad of a given sink pad for the total stream duration.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the query could be performed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">a pointer to the #GstFormat asked for. On return contains the #GstFormat used.</doc>
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="duration"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a location in which to store the total duration, or NULL.</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_peer_position"
+              c:identifier="gst_pad_query_peer_position">
+        <doc xml:whitespace="preserve">Queries the peer of a given sink pad for the stream position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the query could be performed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">a pointer to the #GstFormat asked for. On return contains the #GstFormat used.</doc>
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="cur"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a location in which to store the current position, or NULL.</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_position" c:identifier="gst_pad_query_position">
+        <doc xml:whitespace="preserve">Queries a pad for the stream position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the query could be performed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format"
+                     direction="inout"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">a pointer to the #GstFormat asked for. On return contains the #GstFormat used.</doc>
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="cur"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">A location in which to store the current position, or NULL.</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_buffer_probe"
+              c:identifier="gst_pad_remove_buffer_probe">
+        <doc xml:whitespace="preserve">Removes a buffer probe from @pad.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">handler id returned from gst_pad_add_buffer_probe</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_data_probe"
+              c:identifier="gst_pad_remove_data_probe">
+        <doc xml:whitespace="preserve">Removes a data probe from @pad.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">handler id returned from gst_pad_add_data_probe</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_event_probe"
+              c:identifier="gst_pad_remove_event_probe">
+        <doc xml:whitespace="preserve">Removes an event probe from @pad.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">handler id returned from gst_pad_add_event_probe</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send_event" c:identifier="gst_pad_send_event">
+        <doc xml:whitespace="preserve">Sends the event to the pad. This function can be used
+by applications to send events in the pipeline.
+If @pad is a source pad, @event should be an upstream event. If @pad is a
+sink pad, @event should be a downstream event. For example, you would not
+send a #GST_EVENT_EOS on a src pad; EOS events only propagate downstream.
+Furthermore, some downstream events have to be serialized with data flow,
+like EOS, while some can travel out-of-band, like #GST_EVENT_FLUSH_START. If
+the event needs to be serialized with data flow, this function will take the
+pad's stream lock while calling its event function.
+To find out whether an event type is upstream, downstream, or downstream and
+serialized, see #GstEventTypeFlags, gst_event_type_get_flags(),
+#GST_EVENT_IS_UPSTREAM, #GST_EVENT_IS_DOWNSTREAM, and
+#GST_EVENT_IS_SERIALIZED. Note that in practice that an application or
+plugin doesn't need to bother itself with this information; the core handles
+all necessary locks and checks.
+This function takes owership of the provided event so you should
+gst_event_ref() it if you want to reuse the event after this call.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the event was handled.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="full">
+            <doc xml:whitespace="preserve">the #GstEvent to send to the pad.</doc>
+            <type name="Event" c:type="GstEvent*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_acceptcaps_function"
+              c:identifier="gst_pad_set_acceptcaps_function"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets the given acceptcaps function for the pad.  The acceptcaps function
+will be called to check if the pad can accept the given caps. Setting the
+acceptcaps function to NULL restores the default behaviour of allowing
+any caps that matches the caps from gst_pad_get_caps().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="acceptcaps" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstPadAcceptCapsFunction to set.</doc>
+            <type name="PadAcceptCapsFunction"
+                  c:type="GstPadAcceptCapsFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_activate_function"
+              c:identifier="gst_pad_set_activate_function"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets the given activate function for @pad. The activate function will
+dispatch to gst_pad_activate_push() or gst_pad_activate_pull() to perform
+the actual activation. Only makes sense to set on sink pads.
+Call this function if your sink pad can start a pull-based task.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="activate" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstPadActivateFunction to set.</doc>
+            <type name="PadActivateFunction" c:type="GstPadActivateFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_activatepull_function"
+              c:identifier="gst_pad_set_activatepull_function"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets the given activate_pull function for the pad. An activate_pull function
+prepares the element and any upstream connections for pulling. See XXX
+part-activation.txt for details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="activatepull" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstPadActivateModeFunction to set.</doc>
+            <type name="PadActivateModeFunction"
+                  c:type="GstPadActivateModeFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_activatepush_function"
+              c:identifier="gst_pad_set_activatepush_function"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets the given activate_push function for the pad. An activate_push function
+prepares the element for pushing. See XXX part-activation.txt for details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="activatepush" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstPadActivateModeFunction to set.</doc>
+            <type name="PadActivateModeFunction"
+                  c:type="GstPadActivateModeFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_active" c:identifier="gst_pad_set_active">
+        <doc xml:whitespace="preserve">Activates or deactivates the given pad.
+Normally called from within core state change functions.
+If @active, makes sure the pad is active. If it is already active, either in
+push or pull mode, just return. Otherwise dispatches to the pad's activate
+function to perform the actual activation.
+If not @active, checks the pad's current mode and calls
+gst_pad_activate_push() or gst_pad_activate_pull(), as appropriate, with a
+FALSE argument.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">#TRUE if the operation was successful.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="active" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether or not the pad should be active.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_blocked" c:identifier="gst_pad_set_blocked">
+        <doc xml:whitespace="preserve">Blocks or unblocks the dataflow on a pad. This function is
+a shortcut for gst_pad_set_blocked_async() with a NULL
+callback.
+&lt;note&gt;
+Pad blocks are only possible for source pads in push mode
+and sink pads in pull mode.
+&lt;/note&gt;
+wrong parameters were passed or the pad was already in the requested state.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the pad could be blocked. This function can fail if the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="blocked" transfer-ownership="none">
+            <doc xml:whitespace="preserve">boolean indicating we should block or unblock</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_blocked_async"
+              c:identifier="gst_pad_set_blocked_async"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Blocks or unblocks the dataflow on a pad. The provided callback
+is called when the operation succeeds; this happens right before the next
+attempt at pushing a buffer on the pad.
+This can take a while as the pad can only become blocked when real dataflow
+is happening.
+When the pipeline is stalled, for example in PAUSED, this can
+take an indeterminate amount of time.
+You can pass NULL as the callback to make this call block. Be careful with
+this blocking call as it might not return for reasons stated above.
+&lt;note&gt;
+Pad block handlers are only called for source pads in push mode
+and sink pads in pull mode.
+&lt;/note&gt;
+wrong parameters were passed or the pad was already in the requested state.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the pad could be blocked. This function can fail if the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="blocked" transfer-ownership="none">
+            <doc xml:whitespace="preserve">boolean indicating whether the pad should be blocked or unblocked</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none" closure="2">
+            <doc xml:whitespace="preserve">#GstPadBlockCallback that will be called when the operation succeeds</doc>
+            <type name="PadBlockCallback" c:type="GstPadBlockCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data passed to the callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_blocked_async_full"
+              c:identifier="gst_pad_set_blocked_async_full"
+              version="0.10.23">
+        <doc xml:whitespace="preserve">Blocks or unblocks the dataflow on a pad. The provided callback
+is called when the operation succeeds; this happens right before the next
+attempt at pushing a buffer on the pad.
+This can take a while as the pad can only become blocked when real dataflow
+is happening.
+When the pipeline is stalled, for example in PAUSED, this can
+take an indeterminate amount of time.
+You can pass NULL as the callback to make this call block. Be careful with
+this blocking call as it might not return for reasons stated above.
+&lt;note&gt;
+Pad block handlers are only called for source pads in push mode
+and sink pads in pull mode.
+&lt;/note&gt;
+wrong parameters were passed or the pad was already in the requested state.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the pad could be blocked. This function can fail if the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="blocked" transfer-ownership="none">
+            <doc xml:whitespace="preserve">boolean indicating whether the pad should be blocked or unblocked</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <doc xml:whitespace="preserve">#GstPadBlockCallback that will be called when the operation succeeds</doc>
+            <type name="PadBlockCallback" c:type="GstPadBlockCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data passed to the callback</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy_data"
+                     transfer-ownership="none"
+                     scope="async">
+            <doc xml:whitespace="preserve">#GDestroyNotify for user_data</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_bufferalloc_function"
+              c:identifier="gst_pad_set_bufferalloc_function"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets the given bufferalloc function for the pad. Note that the
+bufferalloc function can only be set on sinkpads.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="bufalloc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstPadBufferAllocFunction to set.</doc>
+            <type name="PadBufferAllocFunction"
+                  c:type="GstPadBufferAllocFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_caps" c:identifier="gst_pad_set_caps">
+        <doc xml:whitespace="preserve">Sets the capabilities of this pad. The caps must be fixed. Any previous
+caps on the pad will be unreffed. This function refs the caps so you should
+unref if as soon as you don't need it anymore.
+It is possible to set NULL caps, which will make the pad unnegotiated
+again.
+or bad parameters were provided to this function.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the caps could be set. FALSE if the caps were not fixed</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstCaps to set.</doc>
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_chain_function"
+              c:identifier="gst_pad_set_chain_function"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets the given chain function for the pad. The chain function is called to
+process a #GstBuffer input buffer. see #GstPadChainFunction for more details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="chain" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstPadChainFunction to set.</doc>
+            <type name="PadChainFunction" c:type="GstPadChainFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_chain_list_function"
+              c:identifier="gst_pad_set_chain_list_function"
+              version="0.10.24"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets the given chain list function for the pad. The chainlist function is
+called to process a #GstBufferList input buffer list. See
+#GstPadChainListFunction for more details.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="chainlist" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstPadChainListFunction to set.</doc>
+            <type name="PadChainListFunction"
+                  c:type="GstPadChainListFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_checkgetrange_function"
+              c:identifier="gst_pad_set_checkgetrange_function"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets the given checkgetrange function for the pad. Implement this function
+on a pad if you dynamically support getrange based scheduling on the pad.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="check" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstPadCheckGetRangeFunction to set.</doc>
+            <type name="PadCheckGetRangeFunction"
+                  c:type="GstPadCheckGetRangeFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_element_private"
+              c:identifier="gst_pad_set_element_private">
+        <doc xml:whitespace="preserve">Set the given private data gpointer on the pad.
+This function can only be used by the element that owns the pad.
+No locking is performed in this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="priv" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The private data to attach to the pad.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_event_function"
+              c:identifier="gst_pad_set_event_function"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets the given event handler for the pad.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstPadEventFunction to set.</doc>
+            <type name="PadEventFunction" c:type="GstPadEventFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_fixatecaps_function"
+              c:identifier="gst_pad_set_fixatecaps_function"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets the given fixatecaps function for the pad.  The fixatecaps function
+will be called whenever the default values for a GstCaps needs to be
+filled in.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fixatecaps" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstPadFixateCapsFunction to set.</doc>
+            <type name="PadFixateCapsFunction"
+                  c:type="GstPadFixateCapsFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_getcaps_function"
+              c:identifier="gst_pad_set_getcaps_function"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets the given getcaps function for the pad. @getcaps should return the
+allowable caps for a pad in the context of the element's state, its link to
+other elements, and the devices or files it has opened. These caps must be a
+subset of the pad template caps. In the NULL state with no links, @getcaps
+should ideally return the same caps as the pad template. In rare
+circumstances, an object property can affect the caps returned by @getcaps,
+but this is discouraged.
+You do not need to call this function if @pad's allowed caps are always the
+same as the pad template caps. This can only be true if the padtemplate
+has fixed simple caps.
+For most filters, the caps returned by @getcaps is directly affected by the
+allowed caps on other pads. For demuxers and decoders, the caps returned by
+the srcpad's getcaps function is directly related to the stream data. Again,
+helps with autoplugging.
+Note that the return value from @getcaps is owned by the caller, so the
+caller should unref the caps after usage.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="getcaps" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstPadGetCapsFunction to set.</doc>
+            <type name="PadGetCapsFunction" c:type="GstPadGetCapsFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_getrange_function"
+              c:identifier="gst_pad_set_getrange_function"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets the given getrange function for the pad. The getrange function is
+called to produce a new #GstBuffer to start the processing pipeline. see
+#GstPadGetRangeFunction for a description of the getrange function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="get" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstPadGetRangeFunction to set.</doc>
+            <type name="PadGetRangeFunction" c:type="GstPadGetRangeFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_internal_link_function"
+              c:identifier="gst_pad_set_internal_link_function"
+              introspectable="0"
+              deprecated="Use the thread-safe gst_pad_set_iterate_internal_links_function()">
+        <doc xml:whitespace="preserve">Sets the given internal link function for the pad.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="intlink" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstPadIntLinkFunction to set.</doc>
+            <type name="PadIntLinkFunction" c:type="GstPadIntLinkFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_iterate_internal_links_function"
+              c:identifier="gst_pad_set_iterate_internal_links_function"
+              version="0.10.21"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets the given internal link iterator function for the pad.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iterintlink" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstPadIterIntLinkFunction to set.</doc>
+            <type name="PadIterIntLinkFunction"
+                  c:type="GstPadIterIntLinkFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_link_function"
+              c:identifier="gst_pad_set_link_function"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets the given link function for the pad. It will be called when
+the pad is linked with another pad.
+The return value #GST_PAD_LINK_OK should be used when the connection can be
+made.
+The return value #GST_PAD_LINK_REFUSED should be used when the connection
+cannot be made for some reason.
+If @link is installed on a source pad, it should call the #GstPadLinkFunction
+of the peer sink pad, if present.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="link" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstPadLinkFunction to set.</doc>
+            <type name="PadLinkFunction" c:type="GstPadLinkFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_query_function"
+              c:identifier="gst_pad_set_query_function"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Set the given query function for the pad.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="query" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstPadQueryFunction to set.</doc>
+            <type name="PadQueryFunction" c:type="GstPadQueryFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_query_type_function"
+              c:identifier="gst_pad_set_query_type_function"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Set the given query type function for the pad.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type_func" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstPadQueryTypeFunction to set.</doc>
+            <type name="PadQueryTypeFunction"
+                  c:type="GstPadQueryTypeFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_setcaps_function"
+              c:identifier="gst_pad_set_setcaps_function"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets the given setcaps function for the pad.  The setcaps function
+will be called whenever a buffer with a new media type is pushed or
+pulled from the pad. The pad/element needs to update its internal
+structures to process the new media type. If this new type is not
+acceptable, the setcaps function should return FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setcaps" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstPadSetCapsFunction to set.</doc>
+            <type name="PadSetCapsFunction" c:type="GstPadSetCapsFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_unlink_function"
+              c:identifier="gst_pad_set_unlink_function"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets the given unlink function for the pad. It will be called
+when the pad is unlinked.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="unlink" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstPadUnlinkFunction to set.</doc>
+            <type name="PadUnlinkFunction" c:type="GstPadUnlinkFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="start_task"
+              c:identifier="gst_pad_start_task"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Starts a task that repeatedly calls @func with @data. This function
+is mostly used in pad activation functions to start the dataflow.
+The #GST_PAD_STREAM_LOCK of @pad will automatically be acquired
+before @func is called.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a %TRUE if the task could be started.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none" closure="1">
+            <doc xml:whitespace="preserve">the task function to call</doc>
+            <type name="TaskFunction" c:type="GstTaskFunction"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data passed to the task function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="stop_task" c:identifier="gst_pad_stop_task">
+        <doc xml:whitespace="preserve">Stop the task of @pad. This function will also make sure that the
+function executed by the task will effectively stop if not called
+from the GstTaskFunction.
+This function will deadlock if called from the GstTaskFunction of
+the task. Use gst_task_pause() instead.
+Regardless of whether the pad has a task, the stream lock is acquired and
+released so as to ensure that streaming through this pad has finished.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a TRUE if the task could be stopped or FALSE on error.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="unlink" c:identifier="gst_pad_unlink">
+        <doc xml:whitespace="preserve">Unlinks the source pad from the sink pad. Will emit the #GstPad::unlinked
+signal on both pads.
+the pads were not linked together.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the pads were unlinked. This function returns FALSE if</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="sinkpad" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the sink #GstPad to unlink.</doc>
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="use_fixed_caps" c:identifier="gst_pad_use_fixed_caps">
+        <doc xml:whitespace="preserve">A helper function you can use that sets the
+pad. This way the function will always return the negotiated caps
+or in case the pad is not negotiated, the padtemplate caps.
+Use this function on a pad that, once gst_pad_set_caps() has been called
+on it, cannot be renegotiated to something else.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="caps" transfer-ownership="none">
+        <type name="Caps"/>
+      </property>
+      <property name="direction"
+                introspectable="0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <type/>
+      </property>
+      <property name="template" writable="1" transfer-ownership="none">
+        <type name="PadTemplate"/>
+      </property>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="element_private">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="padtemplate">
+        <type name="PadTemplate" c:type="GstPadTemplate*"/>
+      </field>
+      <field name="direction">
+        <type name="PadDirection" c:type="GstPadDirection"/>
+      </field>
+      <field name="stream_rec_lock">
+        <type name="GLib.StaticRecMutex" c:type="GStaticRecMutex*"/>
+      </field>
+      <field name="task">
+        <type name="Task" c:type="GstTask*"/>
+      </field>
+      <field name="preroll_lock">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="preroll_cond">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="block_cond">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="block_callback">
+        <type name="PadBlockCallback" c:type="GstPadBlockCallback"/>
+      </field>
+      <field name="block_data">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="caps">
+        <type name="Caps" c:type="GstCaps*"/>
+      </field>
+      <field name="getcapsfunc">
+        <type name="PadGetCapsFunction" c:type="GstPadGetCapsFunction"/>
+      </field>
+      <field name="setcapsfunc">
+        <type name="PadSetCapsFunction" c:type="GstPadSetCapsFunction"/>
+      </field>
+      <field name="acceptcapsfunc">
+        <type name="PadAcceptCapsFunction" c:type="GstPadAcceptCapsFunction"/>
+      </field>
+      <field name="fixatecapsfunc">
+        <type name="PadFixateCapsFunction" c:type="GstPadFixateCapsFunction"/>
+      </field>
+      <field name="activatefunc">
+        <type name="PadActivateFunction" c:type="GstPadActivateFunction"/>
+      </field>
+      <field name="activatepushfunc">
+        <type name="PadActivateModeFunction"
+              c:type="GstPadActivateModeFunction"/>
+      </field>
+      <field name="activatepullfunc">
+        <type name="PadActivateModeFunction"
+              c:type="GstPadActivateModeFunction"/>
+      </field>
+      <field name="linkfunc">
+        <type name="PadLinkFunction" c:type="GstPadLinkFunction"/>
+      </field>
+      <field name="unlinkfunc">
+        <type name="PadUnlinkFunction" c:type="GstPadUnlinkFunction"/>
+      </field>
+      <field name="peer">
+        <type name="Pad" c:type="GstPad*"/>
+      </field>
+      <field name="sched_private">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="chainfunc">
+        <type name="PadChainFunction" c:type="GstPadChainFunction"/>
+      </field>
+      <field name="checkgetrangefunc">
+        <type name="PadCheckGetRangeFunction"
+              c:type="GstPadCheckGetRangeFunction"/>
+      </field>
+      <field name="getrangefunc">
+        <type name="PadGetRangeFunction" c:type="GstPadGetRangeFunction"/>
+      </field>
+      <field name="eventfunc">
+        <type name="PadEventFunction" c:type="GstPadEventFunction"/>
+      </field>
+      <field name="mode">
+        <type name="ActivateMode" c:type="GstActivateMode"/>
+      </field>
+      <field name="querytypefunc">
+        <type name="PadQueryTypeFunction" c:type="GstPadQueryTypeFunction"/>
+      </field>
+      <field name="queryfunc">
+        <type name="PadQueryFunction" c:type="GstPadQueryFunction"/>
+      </field>
+      <field name="intlinkfunc">
+        <type name="PadIntLinkFunction" c:type="GstPadIntLinkFunction"/>
+      </field>
+      <field name="bufferallocfunc">
+        <type name="PadBufferAllocFunction"
+              c:type="GstPadBufferAllocFunction"/>
+      </field>
+      <field name="do_buffer_signals">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="do_event_signals">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="iterintlinkfunc" introspectable="0">
+        <type name="PadIterIntLinkFunction"
+              c:type="GstPadIterIntLinkFunction"/>
+      </field>
+      <field name="block_destroy_data">
+        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+      </field>
+      <union name="abidata" c:type="abidata">
+        <record name="ABI" c:type="ABI">
+          <field name="block_callback_called" writable="1">
+            <type name="gboolean" c:type="gboolean"/>
+          </field>
+          <field name="priv" writable="1">
+            <type name="PadPrivate" c:type="GstPadPrivate*"/>
+          </field>
+        </record>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </field>
+      </union>
+      <glib:signal name="have-data">
+        <doc xml:whitespace="preserve">Signals that new data is available on the pad. This signal is used
+internally for implementing pad probes.
+See gst_pad_add_*_probe functions.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE to keep the data, %FALSE to drop it</doc>
+          <type name="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="mini_obj" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new data</doc>
+            <type name="MiniObject"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="linked">
+        <doc xml:whitespace="preserve">Signals that a pad has been linked to the peer pad.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="peer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the peer pad that has been connected</doc>
+            <type name="Pad"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="request-link">
+        <doc xml:whitespace="preserve">Signals that a pad connection has been requested.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="unlinked">
+        <doc xml:whitespace="preserve">Signals that a pad has been unlinked from the peer pad.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="peer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the peer pad that has been disconnected</doc>
+            <type name="Pad"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <callback name="PadAcceptCapsFunction" c:type="GstPadAcceptCapsFunction">
+      <doc xml:whitespace="preserve">Check if @pad can accept @caps. By default this function will see if @caps
+intersect with the result from gst_pad_get_caps() by can be overridden to
+perform extra checks.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if the caps can be accepted by the pad.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstPad to check</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="caps" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstCaps to check</doc>
+          <type name="Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadActivateFunction" c:type="GstPadActivateFunction">
+      <doc xml:whitespace="preserve">This function is called when the pad is activated during the element
+READY to PAUSED state change. By default this function will call the
+activate function that puts the pad in push mode but elements can
+override this function to activate the pad in pull mode if they wish.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if the pad could be activated.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GstPad</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadActivateModeFunction"
+              c:type="GstPadActivateModeFunction">
+      <doc xml:whitespace="preserve">The prototype of the push and pull activate functions.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if the pad could be activated or deactivated.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GstPad</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="active" transfer-ownership="none">
+          <doc xml:whitespace="preserve">activate or deactivate the pad.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadBlockCallback" c:type="GstPadBlockCallback">
+      <doc xml:whitespace="preserve">Callback used by gst_pad_set_blocked_async(). Gets called when the blocking
+operation succeeds.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstPad that is blockend or unblocked.</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="blocked" transfer-ownership="none">
+          <doc xml:whitespace="preserve">blocking state for the pad</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <doc xml:whitespace="preserve">the gpointer to optional user data.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadBufferAllocFunction" c:type="GstPadBufferAllocFunction">
+      <doc xml:whitespace="preserve">Ask the sinkpad @pad to allocate a buffer with @offset, @size and @caps.
+The result will be stored in @buf.
+The purpose of this function is to allocate a buffer that is optimal to
+be processed by @pad. The function is mostly overridden by elements that can
+provide a hardware buffer in order to avoid additional memcpy operations.
+The function can return a buffer that has caps different from the requested
+new caps.
+If a format change was requested, the returned buffer will be one to hold
+the data of said new caps, so its size might be different from the requested
+When this function returns anything else than #GST_FLOW_OK, the buffer allocation
+failed and @buf does not contain valid data. If the function returns #GST_FLOW_OK and
+the @buf is NULL, a #GstBuffer will be created with @caps, @offset and @size.
+By default this function returns a new buffer of @size and with @caps containing
+purely malloced data. The buffer should be freed with gst_buffer_unref()
+after usage.
+value means @buf does not hold a valid buffer.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">#GST_FLOW_OK if @buf contains a valid buffer, any other return</doc>
+        <type name="FlowReturn" c:type="GstFlowReturn"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a sink #GstPad</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="offset" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the desired offset of the buffer</doc>
+          <type name="guint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the desired size of the buffer</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="caps" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the desired caps of the buffer</doc>
+          <type name="Caps" c:type="GstCaps*"/>
+        </parameter>
+        <parameter name="buf" transfer-ownership="none">
+          <doc xml:whitespace="preserve">pointer to hold the allocated buffer.</doc>
+          <type name="Buffer" c:type="GstBuffer**"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadChainFunction" c:type="GstPadChainFunction">
+      <doc xml:whitespace="preserve">A function that will be called on sinkpads when chaining buffers.
+The function typically processes the data contained in the buffer and
+either consumes the data or passes it on to the internally linked pad(s).
+The implementer of this function receives a refcount to @buffer and should
+gst_buffer_unref() when the buffer is no longer needed.
+When a chain function detects an error in the data stream, it must post an
+error on the bus and return an appropriate #GstFlowReturn value.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">#GST_FLOW_OK for success</doc>
+        <type name="FlowReturn" c:type="GstFlowReturn"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the sink #GstPad that performed the chain.</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstBuffer that is chained, not %NULL.</doc>
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadChainListFunction" c:type="GstPadChainListFunction">
+      <doc xml:whitespace="preserve">A function that will be called on sinkpads when chaining buffer lists.
+The function typically processes the data contained in the buffer list and
+either consumes the data or passes it on to the internally linked pad(s).
+The implementer of this function receives a refcount to @list and
+should gst_buffer_list_unref() when the list is no longer needed.
+When a chainlist function detects an error in the data stream, it must
+post an error on the bus and return an appropriate #GstFlowReturn value.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">#GST_FLOW_OK for success</doc>
+        <type name="FlowReturn" c:type="GstFlowReturn"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the sink #GstPad that performed the chain.</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="list" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstBufferList that is chained, not %NULL.</doc>
+          <type name="BufferList" c:type="GstBufferList*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadCheckGetRangeFunction"
+              c:type="GstPadCheckGetRangeFunction">
+      <doc xml:whitespace="preserve">Check if @pad can be activated in pull mode.
+This function will be deprecated after 0.10; use the seeking query to check
+if a pad can support random access.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if the pad can operate in pull mode.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GstPad</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="PadClass"
+            c:type="GstPadClass"
+            glib:is-gtype-struct-for="Pad">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="linked">
+        <callback name="linked">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="pad" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+            <parameter name="peer" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unlinked">
+        <callback name="unlinked">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="pad" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+            <parameter name="peer" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="request_link">
+        <callback name="request_link">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="pad" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="have_data">
+        <callback name="have_data">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="pad" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <type name="MiniObject" c:type="GstMiniObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <enumeration name="PadDirection" c:type="GstPadDirection">
+      <doc xml:whitespace="preserve">The direction of a pad.</doc>
+      <member name="unknown" value="0" c:identifier="GST_PAD_UNKNOWN"/>
+      <member name="src" value="1" c:identifier="GST_PAD_SRC"/>
+      <member name="sink" value="2" c:identifier="GST_PAD_SINK"/>
+    </enumeration>
+    <callback name="PadDispatcherFunction" c:type="GstPadDispatcherFunction">
+      <doc xml:whitespace="preserve">A dispatcher function is called for all internally linked pads, see
+gst_pad_dispatcher().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if the dispatching procedure has to be stopped.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstPad that is dispatched.</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the gpointer to optional user data.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadEventFunction" c:type="GstPadEventFunction">
+      <doc xml:whitespace="preserve">Function signature to handle an event for the pad.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if the pad could handle the event.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstPad to handle the event.</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="event" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstEvent to handle.</doc>
+          <type name="Event" c:type="GstEvent*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadFixateCapsFunction" c:type="GstPadFixateCapsFunction">
+      <doc xml:whitespace="preserve">Given possibly unfixed caps @caps, let @pad use its default prefered
+format to make a fixed caps. @caps should be writable. By default this
+function will pick the first value of any ranges or lists in the caps but
+elements can override this function to perform other behaviour.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GstPad</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="caps" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstCaps to fixate</doc>
+          <type name="Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="PadFlags" c:type="GstPadFlags">
+      <doc xml:whitespace="preserve">Pad state flags</doc>
+      <member name="blocked" value="16" c:identifier="GST_PAD_BLOCKED"/>
+      <member name="flushing" value="32" c:identifier="GST_PAD_FLUSHING"/>
+      <member name="in_getcaps" value="64" c:identifier="GST_PAD_IN_GETCAPS"/>
+      <member name="in_setcaps" value="128" c:identifier="GST_PAD_IN_SETCAPS"/>
+      <member name="blocking" value="256" c:identifier="GST_PAD_BLOCKING"/>
+      <member name="flag_last" value="4096" c:identifier="GST_PAD_FLAG_LAST"/>
+    </bitfield>
+    <callback name="PadGetCapsFunction" c:type="GstPadGetCapsFunction">
+      <doc xml:whitespace="preserve">Returns a copy of the capabilities of the specified pad. By default this
+function will return the pad template capabilities, but can optionally
+be overridden by elements.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a newly allocated copy #GstCaps of the pad.</doc>
+        <type name="Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstPad to get the capabilities of.</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadGetRangeFunction" c:type="GstPadGetRangeFunction">
+      <doc xml:whitespace="preserve">This function will be called on source pads when a peer element
+request a buffer at the specified @offset and @length. If this function
+returns #GST_FLOW_OK, the result buffer will be stored in @buffer. The
+contents of @buffer is invalid for any other return value.
+This function is installed on a source pad with
+gst_pad_set_getrange_function() and can only be called on source pads after
+they are successfully activated with gst_pad_activate_pull().
+between 0 and the length in bytes of the data available on @pad. The
+length (duration in bytes) can be retrieved with a #GST_QUERY_DURATION or with a
+#GST_QUERY_SEEKING.
+Any @offset larger or equal than the length will make the function return
+#GST_FLOW_UNEXPECTED, which corresponds to EOS. In this case @buffer does not
+contain a valid buffer.
+The buffer size of @buffer will only be smaller than @length when @offset is
+near the end of the stream. In all other cases, the size of @buffer must be
+exactly the requested size.
+It is allowed to call this function with a 0 @length and valid @offset, in
+which case @buffer will contain a 0-sized buffer and the function returns
+#GST_FLOW_OK.
+When this function is called with a -1 @offset, the sequentially next buffer
+of length @length in the stream is returned.
+When this function is called with a -1 @length, a buffer with a default
+optimal length is returned in @buffer. The length might depend on the value
+of @offset.
+return value leaves @buffer undefined.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">#GST_FLOW_OK for success and a valid buffer in @buffer. Any other</doc>
+        <type name="FlowReturn" c:type="GstFlowReturn"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the src #GstPad to perform the getrange on.</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="offset" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the offset of the range</doc>
+          <type name="guint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the length of the range</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a memory location to hold the result buffer, cannot be NULL.</doc>
+          <type name="Buffer" c:type="GstBuffer**"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadIntLinkFunction"
+              c:type="GstPadIntLinkFunction"
+              deprecated="use the threadsafe #GstPadIterIntLinkFunction instead.">
+      <doc xml:whitespace="preserve">The signature of the internal pad link function.
+the inside of the parent element.
+The caller must call g_list_free() on it after use.</doc>
+      <return-value transfer-ownership="container">
+        <doc xml:whitespace="preserve">a newly allocated #GList of pads that are linked to the given pad on</doc>
+        <type name="GLib.List" c:type="GList*">
+          <type name="Pad"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GstPad to query.</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadIterIntLinkFunction"
+              c:type="GstPadIterIntLinkFunction"
+              introspectable="0">
+      <doc xml:whitespace="preserve">The signature of the internal pad link iterator function.
+linked to the given pad on the inside of the parent element.
+the caller must call gst_iterator_free() after usage.
+Since 0.10.21</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a new #GstIterator that will iterate over all pads that are</doc>
+        <type name="Iterator" c:type="GstIterator*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GstPad to query.</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="PadLinkCheck" version="0.10.30" c:type="GstPadLinkCheck">
+      <doc xml:whitespace="preserve">The amount of checking to be done when linking pads. @GST_PAD_LINK_CHECK_CAPS
+and @GST_PAD_LINK_CHECK_TEMPLATE_CAPS are mutually exclusive. If both are
+specified, expensive but safe @GST_PAD_LINK_CHECK_CAPS are performed.
+&lt;warning&gt;&lt;para&gt;
+Only disable some of the checks if you are 100% certain you know the link
+will not fail because of hierarchy/caps compatibility failures. If uncertain,
+use the default checks (%GST_PAD_LINK_CHECK_DEFAULT) or the regular methods
+for linking the pads.
+&lt;/para&gt;&lt;/warning&gt;</doc>
+      <member name="nothing"
+              value="0"
+              c:identifier="GST_PAD_LINK_CHECK_NOTHING"/>
+      <member name="hierarchy"
+              value="1"
+              c:identifier="GST_PAD_LINK_CHECK_HIERARCHY"/>
+      <member name="template_caps"
+              value="2"
+              c:identifier="GST_PAD_LINK_CHECK_TEMPLATE_CAPS"/>
+      <member name="caps" value="4" c:identifier="GST_PAD_LINK_CHECK_CAPS"/>
+    </bitfield>
+    <callback name="PadLinkFunction" c:type="GstPadLinkFunction">
+      <doc xml:whitespace="preserve">Function signature to handle a new link on the pad.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the result of the link with the specified peer.</doc>
+        <type name="PadLinkReturn" c:type="GstPadLinkReturn"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstPad that is linked.</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="peer" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the peer #GstPad of the link</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="PadLinkReturn" c:type="GstPadLinkReturn">
+      <doc xml:whitespace="preserve">Result values from gst_pad_link and friends.</doc>
+      <member name="ok" value="0" c:identifier="GST_PAD_LINK_OK"/>
+      <member name="wrong_hierarchy"
+              value="-1"
+              c:identifier="GST_PAD_LINK_WRONG_HIERARCHY"/>
+      <member name="was_linked"
+              value="-2"
+              c:identifier="GST_PAD_LINK_WAS_LINKED"/>
+      <member name="wrong_direction"
+              value="-3"
+              c:identifier="GST_PAD_LINK_WRONG_DIRECTION"/>
+      <member name="noformat" value="-4" c:identifier="GST_PAD_LINK_NOFORMAT"/>
+      <member name="nosched" value="-5" c:identifier="GST_PAD_LINK_NOSCHED"/>
+      <member name="refused" value="-6" c:identifier="GST_PAD_LINK_REFUSED"/>
+    </enumeration>
+    <enumeration name="PadPresence" c:type="GstPadPresence">
+      <doc xml:whitespace="preserve">Indicates when this pad will become available.</doc>
+      <member name="always" value="0" c:identifier="GST_PAD_ALWAYS"/>
+      <member name="sometimes" value="1" c:identifier="GST_PAD_SOMETIMES"/>
+      <member name="request" value="2" c:identifier="GST_PAD_REQUEST"/>
+    </enumeration>
+    <record name="PadPrivate" c:type="GstPadPrivate" disguised="1">
+    </record>
+    <callback name="PadQueryFunction" c:type="GstPadQueryFunction">
+      <doc xml:whitespace="preserve">The signature of the query function.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if the query could be performed.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstPad to query.</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="query" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstQuery object to execute</doc>
+          <type name="Query" c:type="GstQuery*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadQueryTypeFunction" c:type="GstPadQueryTypeFunction">
+      <doc xml:whitespace="preserve">The signature of the query types function.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a constant array of query types</doc>
+        <type name="QueryType" c:type="GstQueryType*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GstPad to query</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadSetCapsFunction" c:type="GstPadSetCapsFunction">
+      <doc xml:whitespace="preserve">Set @caps on @pad. By default this function updates the caps of the
+pad but the function can be overriden by elements to perform extra
+actions or verifications.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if the caps could be set on the pad.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstPad to set the capabilities of.</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="caps" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstCaps to set</doc>
+          <type name="Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="PadTemplate"
+           c:symbol-prefix="pad_template"
+           c:type="GstPadTemplate"
+           parent="Object"
+           glib:type-name="GstPadTemplate"
+           glib:get-type="gst_pad_template_get_type"
+           glib:type-struct="PadTemplateClass">
+      <doc xml:whitespace="preserve">Padtemplates describe the possible media types a pad or an elementfactory can
+handle. This allows for both inspection of handled types before loading the
+element plugin as well as identifying pads on elements that are not yet
+created (request or sometimes pads).
+Pad and PadTemplates have #GstCaps attached to it to describe the media type
+they are capable of dealing with. gst_pad_template_get_caps() or
+GST_PAD_TEMPLATE_CAPS() are used to get the caps of a padtemplate. It's not
+possible to modify the caps of a padtemplate after creation.
+PadTemplates have a #GstPadPresence property which identifies the lifetime
+of the pad and that can be retrieved with GST_PAD_TEMPLATE_PRESENCE(). Also
+the direction of the pad can be retrieved from the #GstPadTemplate with
+GST_PAD_TEMPLATE_DIRECTION().
+The GST_PAD_TEMPLATE_NAME_TEMPLATE () is important for GST_PAD_REQUEST pads
+because it has to be used as the name in the gst_element_get_request_pad()
+call to instantiate a pad from this template.
+Padtemplates can be created with gst_pad_template_new() or with
+gst_static_pad_template_get (), which creates a #GstPadTemplate from a
+#GstStaticPadTemplate that can be filled with the
+convenient GST_STATIC_PAD_TEMPLATE() macro.
+A padtemplate can be used to create a pad (see gst_pad_new_from_template()
+or gst_pad_new_from_static_template ()) or to add to an element class
+(see gst_element_class_add_pad_template ()).
+The following code example shows the code to create a pad from a padtemplate.
+&lt;example&gt;
+&lt;title&gt;Create a pad from a padtemplate&lt;/title&gt;
+&lt;programlisting&gt;
+GstStaticPadTemplate my_template =
+GST_STATIC_PAD_TEMPLATE (
+"sink",          // the name of the pad
+GST_PAD_SINK,    // the direction of the pad
+GST_PAD_ALWAYS,  // when this pad will be present
+GST_STATIC_CAPS (        // the capabilities of the padtemplate
+"audio/x-raw-int, "
+"channels = (int) [ 1, 6 ]"
+)
+);
+void
+my_method (void)
+{
+GstPad *pad;
+pad = gst_pad_new_from_static_template (&amp;amp;my_template, "sink");
+...
+}
+&lt;/programlisting&gt;
+&lt;/example&gt;
+The following example shows you how to add the padtemplate to an
+element class, this is usually done in the base_init of the class:
+&lt;informalexample&gt;
+&lt;programlisting&gt;
+static void
+my_element_base_init (gpointer g_class)
+{
+GstElementClass *gstelement_class = GST_ELEMENT_CLASS (g_class);
+gst_element_class_add_pad_template (gstelement_class,
+gst_static_pad_template_get (&amp;amp;my_template));
+}
+&lt;/programlisting&gt;
+&lt;/informalexample&gt;
+Last reviewed on 2006-02-14 (0.10.3)</doc>
+      <constructor name="new" c:identifier="gst_pad_template_new">
+        <doc xml:whitespace="preserve">Creates a new pad template with a name according to the given template
+and with the given arguments. This functions takes ownership of the provided
+caps, so be sure to not use them afterwards.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstPadTemplate.</doc>
+          <type name="PadTemplate" c:type="GstPadTemplate*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name_template" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name template.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="direction" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstPadDirection of the template.</doc>
+            <type name="PadDirection" c:type="GstPadDirection"/>
+          </parameter>
+          <parameter name="presence" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstPadPresence of the pad.</doc>
+            <type name="PadPresence" c:type="GstPadPresence"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GstCaps set for the template. The caps are taken ownership of.</doc>
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="pad_created" invoker="pad_created">
+        <doc xml:whitespace="preserve">Emit the pad-created signal for this template when created by this pad.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstPad that created it</doc>
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_caps" c:identifier="gst_pad_template_get_caps">
+        <doc xml:whitespace="preserve">Gets the capabilities of the pad template.
+keep a reference to the caps, take a ref (see gst_caps_ref ()).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstCaps of the pad template. If you need to</doc>
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="pad_created" c:identifier="gst_pad_template_pad_created">
+        <doc xml:whitespace="preserve">Emit the pad-created signal for this template when created by this pad.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstPad that created it</doc>
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="caps"
+                version="0.10.21"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The capabilities of the pad described by the pad template.</doc>
+        <type name="Caps"/>
+      </property>
+      <property name="direction"
+                version="0.10.21"
+                introspectable="0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The direction of the pad described by the pad template.</doc>
+        <type/>
+      </property>
+      <property name="name-template"
+                version="0.10.21"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The name template of the pad template.</doc>
+        <type name="utf8"/>
+      </property>
+      <property name="presence"
+                version="0.10.21"
+                introspectable="0"
+                writable="1"
+                construct-only="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">When the pad described by the pad template will become available.</doc>
+        <type/>
+      </property>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="name_template">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="direction">
+        <type name="PadDirection" c:type="GstPadDirection"/>
+      </field>
+      <field name="presence">
+        <type name="PadPresence" c:type="GstPadPresence"/>
+      </field>
+      <field name="caps">
+        <type name="Caps" c:type="GstCaps*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+      <glib:signal name="pad-created">
+        <doc xml:whitespace="preserve">This signal is fired when an element creates a pad from this template.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the pad that was created.</doc>
+            <type name="Pad"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="PadTemplateClass"
+            c:type="GstPadTemplateClass"
+            glib:is-gtype-struct-for="PadTemplate">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="pad_created">
+        <callback name="pad_created">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="templ" transfer-ownership="none">
+              <type name="PadTemplate" c:type="GstPadTemplate*"/>
+            </parameter>
+            <parameter name="pad" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the #GstPad that created it</doc>
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="PadTemplateFlags" c:type="GstPadTemplateFlags">
+      <doc xml:whitespace="preserve">Flags for the padtemplate</doc>
+      <member name="fixed" value="16" c:identifier="GST_PAD_TEMPLATE_FIXED"/>
+      <member name="flag_last"
+              value="256"
+              c:identifier="GST_PAD_TEMPLATE_FLAG_LAST"/>
+    </bitfield>
+    <callback name="PadUnlinkFunction" c:type="GstPadUnlinkFunction">
+      <doc xml:whitespace="preserve">Function signature to handle a unlinking the pad prom its peer.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstPad that is linked.</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="ParamFraction"
+           c:symbol-prefix="param_spec_fraction"
+           glib:type-name="GstParamFraction"
+           glib:get-type="gst_param_spec_fraction_get_type"
+           glib:fundamental="1">
+      <function name=""
+                c:identifier="gst_param_spec_fraction"
+                version="0.10.14"
+                introspectable="0">
+        <doc xml:whitespace="preserve">This function creates a fraction GParamSpec for use by objects/elements
+that want to expose properties of fraction type. This function is typically
+used in connection with g_object_class_install_property() in a GObjects's
+instance_init function.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a newly created parameter specification</doc>
+          <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">canonical name of the property specified</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="nick" transfer-ownership="none">
+            <doc xml:whitespace="preserve">nick name for the property specified</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="blurb" transfer-ownership="none">
+            <doc xml:whitespace="preserve">description of the property specified</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="min_num" transfer-ownership="none">
+            <doc xml:whitespace="preserve">minimum value (fraction numerator)</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="min_denom" transfer-ownership="none">
+            <doc xml:whitespace="preserve">minimum value (fraction denominator)</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="max_num" transfer-ownership="none">
+            <doc xml:whitespace="preserve">maximum value (fraction numerator)</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="max_denom" transfer-ownership="none">
+            <doc xml:whitespace="preserve">maximum value (fraction denominator)</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="default_num" transfer-ownership="none">
+            <doc xml:whitespace="preserve">default value (fraction numerator)</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="default_denom" transfer-ownership="none">
+            <doc xml:whitespace="preserve">default value (fraction denominator)</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flags for the property specified</doc>
+            <type name="GObject.ParamFlags" c:type="GParamFlags"/>
+          </parameter>
+        </parameters>
+      </function>
+    </class>
+    <record name="ParamSpecFraction" c:type="GstParamSpecFraction">
+      <doc xml:whitespace="preserve">A GParamSpec derived structure that contains the meta data for fractional
+properties.</doc>
+      <field name="parent_instance" writable="1">
+        <type name="GObject.ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="min_num" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="min_den" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="max_num" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="max_den" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="def_num" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="def_den" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+    </record>
+    <record name="ParamSpecMiniObject" c:type="GstParamSpecMiniObject">
+      <doc xml:whitespace="preserve">A %GParamSpec derived structure that contains the meta data
+for %GstMiniObject properties.</doc>
+      <field name="parent_instance" writable="1">
+        <type name="GObject.ParamSpec" c:type="GParamSpec"/>
+      </field>
+    </record>
+    <record name="ParseContext"
+            c:type="GstParseContext"
+            version="0.10.20"
+            glib:type-name="GstParseContext"
+            glib:get-type="gst_parse_context_get_type"
+            c:symbol-prefix="parse_context">
+      <doc xml:whitespace="preserve">Opaque structure.</doc>
+      <constructor name="new"
+                   c:identifier="gst_parse_context_new"
+                   version="0.10.20">
+        <doc xml:whitespace="preserve">Allocates a parse context for use with gst_parse_launch_full() or
+gst_parse_launchv_full().
+gst_parse_context_free() when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly-allocated parse context. Free with</doc>
+          <type name="ParseContext" c:type="GstParseContext*"/>
+        </return-value>
+      </constructor>
+      <method name="free"
+              c:identifier="gst_parse_context_free"
+              version="0.10.20">
+        <doc xml:whitespace="preserve">Frees a parse context previously allocated with gst_parse_context_new().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_missing_elements"
+              c:identifier="gst_parse_context_get_missing_elements"
+              version="0.10.20">
+        <doc xml:whitespace="preserve">Retrieve missing elements from a previous run of gst_parse_launch_full()
+or gst_parse_launchv_full(). Will only return results if an error code
+of %GST_PARSE_ERROR_NO_SUCH_ELEMENT was returned.
+NULL-terminated array of element factory name strings of missing
+elements. Free with g_strfreev() when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="ParseError"
+                 c:type="GstParseError"
+                 glib:error-quark="gst_parse_error_quark">
+      <doc xml:whitespace="preserve">The different parsing errors that can occur.</doc>
+      <member name="syntax" value="0" c:identifier="GST_PARSE_ERROR_SYNTAX"/>
+      <member name="no_such_element"
+              value="1"
+              c:identifier="GST_PARSE_ERROR_NO_SUCH_ELEMENT"/>
+      <member name="no_such_property"
+              value="2"
+              c:identifier="GST_PARSE_ERROR_NO_SUCH_PROPERTY"/>
+      <member name="link" value="3" c:identifier="GST_PARSE_ERROR_LINK"/>
+      <member name="could_not_set_property"
+              value="4"
+              c:identifier="GST_PARSE_ERROR_COULD_NOT_SET_PROPERTY"/>
+      <member name="empty_bin"
+              value="5"
+              c:identifier="GST_PARSE_ERROR_EMPTY_BIN"/>
+      <member name="empty" value="6" c:identifier="GST_PARSE_ERROR_EMPTY"/>
+    </enumeration>
+    <bitfield name="ParseFlags" version="0.10.20" c:type="GstParseFlags">
+      <doc xml:whitespace="preserve">Parsing options.</doc>
+      <member name="none" value="0" c:identifier="GST_PARSE_FLAG_NONE"/>
+      <member name="fatal_errors"
+              value="1"
+              c:identifier="GST_PARSE_FLAG_FATAL_ERRORS"/>
+    </bitfield>
+    <class name="Pipeline"
+           c:symbol-prefix="pipeline"
+           c:type="GstPipeline"
+           parent="Bin"
+           glib:type-name="GstPipeline"
+           glib:get-type="gst_pipeline_get_type"
+           glib:type-struct="PipelineClass">
+      <doc xml:whitespace="preserve">A #GstPipeline is a special #GstBin used as the toplevel container for
+the filter graph. The #GstPipeline will manage the selection and
+distribution of a global #GstClock as well as provide a #GstBus to the
+application. It will also implement a default behavour for managing
+seek events (see gst_element_seek()).
+gst_pipeline_new() is used to create a pipeline. when you are done with
+the pipeline, use gst_object_unref() to free its resources including all
+added #GstElement objects (if not otherwise referenced).
+Elements are added and removed from the pipeline using the #GstBin
+methods like gst_bin_add() and gst_bin_remove() (see #GstBin).
+Before changing the state of the #GstPipeline (see #GstElement) a #GstBus
+can be retrieved with gst_pipeline_get_bus(). This bus can then be
+used to receive #GstMessage from the elements in the pipeline.
+By default, a #GstPipeline will automatically flush the pending #GstBus
+messages when going to the NULL state to ensure that no circular
+references exist when no messages are read from the #GstBus. This
+behaviour can be changed with gst_pipeline_set_auto_flush_bus().
+When the #GstPipeline performs the PAUSED to PLAYING state change it will
+select a clock for the elements. The clock selection algorithm will by
+default select a clock provided by an element that is most upstream
+(closest to the source). For live pipelines (ones that return
+#GST_STATE_CHANGE_NO_PREROLL from the gst_element_set_state() call) this
+will select the clock provided by the live source. For normal pipelines
+this will select a clock provided by the sinks (most likely the audio
+sink). If no element provides a clock, a default #GstSystemClock is used.
+The clock selection can be controlled with the gst_pipeline_use_clock()
+method, which will enforce a given clock on the pipeline. With
+gst_pipeline_auto_clock() the default clock selection algorithm can be
+restored.
+A #GstPipeline maintains a running time for the elements. The running
+time is defined as the difference between the current clock time and
+the base time. When the pipeline goes to READY or a flushing seek is
+performed on it, the running time is reset to 0. When the pipeline is
+set from PLAYING to PAUSED, the current clock time is sampled and used to
+configure the base time for the elements when the pipeline is set
+to PLAYING again. The effect is that the running time (as the difference
+between the clock time and the base time) will count how much time was spent
+in the PLAYING state. This default behaviour can be changed with the
+gst_element_set_start_time() method.
+When sending a flushing seek event to a GstPipeline (see
+gst_element_seek()), it will make sure that the pipeline is properly
+PAUSED and resumed as well as set the new running time to 0 when the
+seek succeeded.
+Last reviewed on 2009-05-29 (0.10.24)</doc>
+      <implements name="ChildProxy"/>
+      <constructor name="new" c:identifier="gst_pipeline_new">
+        <doc xml:whitespace="preserve">Create a new pipeline with the given name.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">newly created GstPipeline</doc>
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of new pipeline</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="auto_clock" c:identifier="gst_pipeline_auto_clock">
+        <doc xml:whitespace="preserve">Let @pipeline select a clock automatically. This is the default
+behaviour.
+Use this function if you previous forced a fixed clock with
+gst_pipeline_use_clock() and want to restore the default
+pipeline clock selection algorithm.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_auto_flush_bus"
+              c:identifier="gst_pipeline_get_auto_flush_bus"
+              version="0.10.4">
+        <doc xml:whitespace="preserve">Check if @pipeline will automatically flush messages when going to
+the NULL state.
+going from READY to NULL state or not.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether the pipeline will automatically flush its bus when</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_bus" c:identifier="gst_pipeline_get_bus">
+        <doc xml:whitespace="preserve">Gets the #GstBus of @pipeline. The bus allows applications to receive
+#GstMessage packets.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GstBus, unref after usage.</doc>
+          <type name="Bus" c:type="GstBus*"/>
+        </return-value>
+      </method>
+      <method name="get_clock" c:identifier="gst_pipeline_get_clock">
+        <doc xml:whitespace="preserve">Gets the current clock used by @pipeline.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GstClock, unref after usage.</doc>
+          <type name="Clock" c:type="GstClock*"/>
+        </return-value>
+      </method>
+      <method name="get_delay"
+              c:identifier="gst_pipeline_get_delay"
+              version="0.10.5">
+        <doc xml:whitespace="preserve">Get the configured delay (see gst_pipeline_set_delay()).
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The configured delay.</doc>
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="get_last_stream_time"
+              c:identifier="gst_pipeline_get_last_stream_time"
+              deprecated="This function has the wrong name and is equivalent to">
+        <doc xml:whitespace="preserve">Gets the last running time of @pipeline. If the pipeline is PLAYING,
+the returned time is the running time used to configure the element's
+base time in the PAUSED-&gt;PLAYING state. If the pipeline is PAUSED, the
+returned time is the running time when the pipeline was paused.
+This function returns #GST_CLOCK_TIME_NONE if the pipeline was
+configured to not handle the management of the element's base time
+(see gst_pipeline_set_new_stream_time()).
+MT safe.
+gst_element_get_start_time().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GstClockTime.</doc>
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="set_auto_flush_bus"
+              c:identifier="gst_pipeline_set_auto_flush_bus"
+              version="0.10.4">
+        <doc xml:whitespace="preserve">Usually, when a pipeline goes from READY to NULL state, it automatically
+flushes all pending messages on the bus, which is done for refcounting
+purposes, to break circular references.
+This means that applications that update state using (async) bus messages
+(e.g. do certain things when a pipeline goes from PAUSED to READY) might
+not get to see messages when the pipeline is shut down, because they might
+be flushed before they can be dispatched in the main thread. This behaviour
+can be disabled using this function.
+It is important that all messages on the bus are handled when the
+automatic flushing is disabled else memory leaks will be introduced.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="auto_flush" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether or not to automatically flush the bus when the pipeline goes from READY to NULL state</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_clock" c:identifier="gst_pipeline_set_clock">
+        <doc xml:whitespace="preserve">Set the clock for @pipeline. The clock will be distributed
+to all the elements managed by the pipeline.
+some element did not accept the clock.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the clock could be set on the pipeline. FALSE if</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="clock" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the clock to set</doc>
+            <type name="Clock" c:type="GstClock*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_delay"
+              c:identifier="gst_pipeline_set_delay"
+              version="0.10.5">
+        <doc xml:whitespace="preserve">Set the expected delay needed for all elements to perform the
+PAUSED to PLAYING state change. @delay will be added to the
+base time of the elements so that they wait an additional @delay
+amount of time before starting to process buffers and cannot be
+#GST_CLOCK_TIME_NONE.
+This option is used for tuning purposes and should normally not be
+used.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="delay" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the delay</doc>
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_new_stream_time"
+              c:identifier="gst_pipeline_set_new_stream_time"
+              deprecated="This function has the wrong name and is equivalent to">
+        <doc xml:whitespace="preserve">Set the new start time of @pipeline to @time. The start time is used to
+set the base time on the elements (see gst_element_set_base_time())
+in the PAUSED-&gt;PLAYING state transition.
+Setting @time to #GST_CLOCK_TIME_NONE will disable the pipeline's management
+of element base time. The application will then be responsible for
+performing base time distribution. This is sometimes useful if you want to
+synchronize capture from multiple pipelines, and you can also ensure that the
+pipelines have the same clock.
+MT safe.
+gst_element_set_start_time().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="time" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new running time to set</doc>
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="use_clock" c:identifier="gst_pipeline_use_clock">
+        <doc xml:whitespace="preserve">Force @pipeline to use the given @clock. The pipeline will
+always use the given clock even if new clock providers are added
+to this pipeline.
+If @clock is NULL all clocking will be disabled which will make
+the pipeline run as fast as possible.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="clock" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the clock to use</doc>
+            <type name="Clock" c:type="GstClock*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="auto-flush-bus"
+                version="0.10.4"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Whether or not to automatically flush all messages on the
+pipeline's bus when going from READY to NULL state. Please see
+gst_pipeline_set_auto_flush_bus() for more information on this option.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="delay"
+                version="0.10.5"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The expected delay needed for elements to spin up to the
+PLAYING state expressed in nanoseconds.
+see gst_pipeline_set_delay() for more information on this option.</doc>
+        <type name="guint64"/>
+      </property>
+      <field name="bin">
+        <type name="Bin" c:type="GstBin"/>
+      </field>
+      <field name="fixed_clock">
+        <type name="Clock" c:type="GstClock*"/>
+      </field>
+      <field name="stream_time">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="delay">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="PipelinePrivate" c:type="GstPipelinePrivate*"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </class>
+    <record name="PipelineClass"
+            c:type="GstPipelineClass"
+            glib:is-gtype-struct-for="Pipeline">
+      <field name="parent_class">
+        <type name="BinClass" c:type="GstBinClass"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="PipelineFlags" c:type="GstPipelineFlags">
+      <doc xml:whitespace="preserve">Pipeline flags</doc>
+      <member name="fixed_clock"
+              value="33554432"
+              c:identifier="GST_PIPELINE_FLAG_FIXED_CLOCK"/>
+      <member name="last"
+              value="536870912"
+              c:identifier="GST_PIPELINE_FLAG_LAST"/>
+    </bitfield>
+    <record name="PipelinePrivate" c:type="GstPipelinePrivate" disguised="1">
+    </record>
+    <class name="Plugin"
+           c:symbol-prefix="plugin"
+           c:type="GstPlugin"
+           parent="Object"
+           glib:type-name="GstPlugin"
+           glib:get-type="gst_plugin_get_type"
+           glib:type-struct="PluginClass">
+      <doc xml:whitespace="preserve">GStreamer is extensible, so #GstElement instances can be loaded at runtime.
+A plugin system can provide one or more of the basic
+&lt;application&gt;GStreamer&lt;/application&gt; #GstPluginFeature subclasses.
+A plugin should export a symbol &lt;symbol&gt;gst_plugin_desc&lt;/symbol&gt; that is a
+struct of type #GstPluginDesc.
+the plugin loader will check the version of the core library the plugin was
+linked against and will create a new #GstPlugin. It will then call the
+#GstPluginInitFunc function that was provided in the
+&lt;symbol&gt;gst_plugin_desc&lt;/symbol&gt;.
+Once you have a handle to a #GstPlugin (e.g. from the #GstRegistry), you
+can add any object that subclasses #GstPluginFeature.
+Usually plugins are always automaticlly loaded so you don't need to call
+gst_plugin_load() explicitly to bring it into memory. There are options to
+statically link plugins to an app or even use GStreamer without a plugin
+repository in which case gst_plugin_load() can be needed to bring the plugin
+into memory.</doc>
+      <function name="error_quark" c:identifier="gst_plugin_error_quark">
+        <doc xml:whitespace="preserve">Get the error quark.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The error quark used in GError messages</doc>
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </return-value>
+      </function>
+      <function name="list_free" c:identifier="gst_plugin_list_free">
+        <doc xml:whitespace="preserve">Unrefs each member of @list, then frees the list.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="full">
+            <doc xml:whitespace="preserve">list of #GstPlugin</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="Plugin"/>
+            </type>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="load_by_name" c:identifier="gst_plugin_load_by_name">
+        <doc xml:whitespace="preserve">Load the named plugin. Refs the plugin.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a reference to a loaded plugin, or NULL on error.</doc>
+          <type name="Plugin" c:type="GstPlugin*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of plugin to load</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="load_file"
+                c:identifier="gst_plugin_load_file"
+                throws="1">
+        <doc xml:whitespace="preserve">Loads the given plugin and refs it.  Caller needs to unref after use.
+reference to the newly-loaded GstPlugin, or NULL if an error occurred.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a reference to the existing loaded GstPlugin, a</doc>
+          <type name="Plugin" c:type="GstPlugin*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the plugin filename to load</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="register_static"
+                c:identifier="gst_plugin_register_static"
+                version="0.10.16">
+        <doc xml:whitespace="preserve">Registers a static plugin, ie. a plugin which is private to an application
+or library and contained within the application or library (as opposed to
+being shipped as a separate module file).
+You must make sure that GStreamer has been initialised (with gst_init() or
+via gst_init_get_option_group()) before calling this function.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the plugin was registered correctly, otherwise FALSE.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="major_version" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the major version number of the GStreamer core that the plugin was compiled for, you can just use GST_VERSION_MAJOR here</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="minor_version" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the minor version number of the GStreamer core that the plugin was compiled for, you can just use GST_VERSION_MINOR here</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a unique name of the plugin (ideally prefixed with an application- or library-specific namespace prefix in order to avoid name conflicts in case a similar plugin with the same name ever gets added to GStreamer)</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="description" transfer-ownership="none">
+            <doc xml:whitespace="preserve">description of the plugin</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="init_func" transfer-ownership="none" scope="call">
+            <doc xml:whitespace="preserve">pointer to the init function of this plugin.</doc>
+            <type name="PluginInitFunc" c:type="GstPluginInitFunc"/>
+          </parameter>
+          <parameter name="version" transfer-ownership="none">
+            <doc xml:whitespace="preserve">version string of the plugin</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="license" transfer-ownership="none">
+            <doc xml:whitespace="preserve">effective license of plugin. Must be one of the approved licenses (see #GstPluginDesc above) or the plugin will not be registered.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="source" transfer-ownership="none">
+            <doc xml:whitespace="preserve">source module plugin belongs to</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="package" transfer-ownership="none">
+            <doc xml:whitespace="preserve">shipped package plugin belongs to</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="origin" transfer-ownership="none">
+            <doc xml:whitespace="preserve">URL to provider of plugin</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="register_static_full"
+                c:identifier="gst_plugin_register_static_full"
+                version="0.10.24">
+        <doc xml:whitespace="preserve">Registers a static plugin, ie. a plugin which is private to an application
+or library and contained within the application or library (as opposed to
+being shipped as a separate module file) with a #GstPluginInitFullFunc
+which allows user data to be passed to the callback function (useful
+for bindings).
+You must make sure that GStreamer has been initialised (with gst_init() or
+via gst_init_get_option_group()) before calling this function.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the plugin was registered correctly, otherwise FALSE.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="major_version" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the major version number of the GStreamer core that the plugin was compiled for, you can just use GST_VERSION_MAJOR here</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="minor_version" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the minor version number of the GStreamer core that the plugin was compiled for, you can just use GST_VERSION_MINOR here</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a unique name of the plugin (ideally prefixed with an application- or library-specific namespace prefix in order to avoid name conflicts in case a similar plugin with the same name ever gets added to GStreamer)</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="description" transfer-ownership="none">
+            <doc xml:whitespace="preserve">description of the plugin</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="init_full_func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="10">
+            <doc xml:whitespace="preserve">pointer to the init function with user data of this plugin.</doc>
+            <type name="PluginInitFullFunc" c:type="GstPluginInitFullFunc"/>
+          </parameter>
+          <parameter name="version" transfer-ownership="none">
+            <doc xml:whitespace="preserve">version string of the plugin</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="license" transfer-ownership="none">
+            <doc xml:whitespace="preserve">effective license of plugin. Must be one of the approved licenses (see #GstPluginDesc above) or the plugin will not be registered.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="source" transfer-ownership="none">
+            <doc xml:whitespace="preserve">source module plugin belongs to</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="package" transfer-ownership="none">
+            <doc xml:whitespace="preserve">shipped package plugin belongs to</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="origin" transfer-ownership="none">
+            <doc xml:whitespace="preserve">URL to provider of plugin</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">gpointer to user data</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="add_dependency"
+              c:identifier="gst_plugin_add_dependency"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Make GStreamer aware of external dependencies which affect the feature
+set of this plugin (ie. the elements or typefinders associated with it).
+GStreamer will re-inspect plugins with external dependencies whenever any
+of the external dependencies change. This is useful for plugins which wrap
+other plugin systems, e.g. a plugin which wraps a plugin-based visualisation
+library and makes visualisations available as GStreamer elements, or a
+codec loader which exposes elements and/or caps dependent on what external
+codec libraries are currently installed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="env_vars" transfer-ownership="none">
+            <doc xml:whitespace="preserve">NULL-terminated array of environent variables affecting the feature set of the plugin (e.g. an environment variable containing paths where to look for additional modules/plugins of a library), or NULL. Environment variable names may be followed by a path component which will be added to the content of the environment variable, e.g. "HOME/.mystuff/plugins".</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+          <parameter name="paths" transfer-ownership="none">
+            <doc xml:whitespace="preserve">NULL-terminated array of directories/paths where dependent files may be.</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+          <parameter name="names" transfer-ownership="none">
+            <doc xml:whitespace="preserve">NULL-terminated array of file names (or file name suffixes, depending on @flags) to be used in combination with the paths from</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">optional flags, or #GST_PLUGIN_DEPENDENCY_FLAG_NONE</doc>
+            <type name="PluginDependencyFlags"
+                  c:type="GstPluginDependencyFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_dependency_simple"
+              c:identifier="gst_plugin_add_dependency_simple"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Make GStreamer aware of external dependencies which affect the feature
+set of this plugin (ie. the elements or typefinders associated with it).
+GStreamer will re-inspect plugins with external dependencies whenever any
+of the external dependencies change. This is useful for plugins which wrap
+other plugin systems, e.g. a plugin which wraps a plugin-based visualisation
+library and makes visualisations available as GStreamer elements, or a
+codec loader which exposes elements and/or caps dependent on what external
+codec libraries are currently installed.
+Convenience wrapper function for gst_plugin_add_dependency() which
+takes simple strings as arguments instead of string arrays, with multiple
+arguments separated by predefined delimiters (see above).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="env_vars" transfer-ownership="none">
+            <doc xml:whitespace="preserve">one or more environent variables (separated by ':', ';' or ','), or NULL. Environment variable names may be followed by a path component which will be added to the content of the environment variable, e.g. "HOME/.mystuff/plugins:MYSTUFF_PLUGINS_PATH"</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="paths" transfer-ownership="none">
+            <doc xml:whitespace="preserve">one ore more directory paths (separated by ':' or ';' or ','), or NULL. Example: "/usr/lib/mystuff/plugins"</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="names" transfer-ownership="none">
+            <doc xml:whitespace="preserve">one or more file names or file name suffixes (separated by commas), or NULL</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">optional flags, or #GST_PLUGIN_DEPENDENCY_FLAG_NONE</doc>
+            <type name="PluginDependencyFlags"
+                  c:type="GstPluginDependencyFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_cache_data"
+              c:identifier="gst_plugin_get_cache_data"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Gets the plugin specific data cache. If it is %NULL there is no cached data
+stored. This is the case when the registry is getting rebuilt.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The cached data as a #GstStructure or %NULL.</doc>
+          <type name="Structure" c:type="GstStructure*"/>
+        </return-value>
+      </method>
+      <method name="get_description" c:identifier="gst_plugin_get_description">
+        <doc xml:whitespace="preserve">Get the long descriptive name of the plugin</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the long name of the plugin</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_filename" c:identifier="gst_plugin_get_filename">
+        <doc xml:whitespace="preserve">get the filename of the plugin</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the filename of the plugin</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_license" c:identifier="gst_plugin_get_license">
+        <doc xml:whitespace="preserve">get the license of the plugin</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the license of the plugin</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_module" c:identifier="gst_plugin_get_module">
+        <doc xml:whitespace="preserve">Gets the #GModule of the plugin. If the plugin isn't loaded yet, NULL is
+returned.
+plugin isn't loaded yet.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">module belonging to the plugin or NULL if the</doc>
+          <type name="GModule.Module" c:type="GModule*"/>
+        </return-value>
+      </method>
+      <method name="get_name" c:identifier="gst_plugin_get_name">
+        <doc xml:whitespace="preserve">Get the short name of the plugin</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the plugin</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_origin" c:identifier="gst_plugin_get_origin">
+        <doc xml:whitespace="preserve">get the URL where the plugin comes from</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the origin of the plugin</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_package" c:identifier="gst_plugin_get_package">
+        <doc xml:whitespace="preserve">get the package the plugin belongs to.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the package of the plugin</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_source" c:identifier="gst_plugin_get_source">
+        <doc xml:whitespace="preserve">get the source module the plugin belongs to.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the source of the plugin</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_version" c:identifier="gst_plugin_get_version">
+        <doc xml:whitespace="preserve">get the version of the plugin</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the version of the plugin</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="is_loaded" c:identifier="gst_plugin_is_loaded">
+        <doc xml:whitespace="preserve">queries if the plugin is loaded into memory</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE is loaded, FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="load" c:identifier="gst_plugin_load">
+        <doc xml:whitespace="preserve">Loads @plugin. Note that the *return value* is the loaded plugin; @plugin is
+untouched. The normal use pattern of this function goes like this:
+&lt;programlisting&gt;
+GstPlugin *loaded_plugin;
+loaded_plugin = gst_plugin_load (plugin);
+// presumably, we're no longer interested in the potentially-unloaded plugin
+gst_object_unref (plugin);
+plugin = loaded_plugin;
+&lt;/programlisting&gt;</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a reference to a loaded plugin, or NULL on error.</doc>
+          <type name="Plugin" c:type="GstPlugin*"/>
+        </return-value>
+      </method>
+      <method name="name_filter" c:identifier="gst_plugin_name_filter">
+        <doc xml:whitespace="preserve">A standard filter that returns TRUE when the plugin is of the
+given name.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the plugin is of the given name.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the plugin</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_cache_data"
+              c:identifier="gst_plugin_set_cache_data"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Adds plugin specific data to cache. Passes the ownership of the structure to
+the @plugin.
+The cache is flushed every time the registry is rebuilt.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cache_data" transfer-ownership="full">
+            <doc xml:whitespace="preserve">a structure containing the data to cache</doc>
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="desc" readable="0" private="1">
+        <type name="PluginDesc" c:type="GstPluginDesc"/>
+      </field>
+      <field name="orig_desc" readable="0" private="1">
+        <type name="PluginDesc" c:type="GstPluginDesc*"/>
+      </field>
+      <field name="flags" readable="0" private="1">
+        <type name="guint" c:type="unsigned"/>
+      </field>
+      <field name="filename" readable="0" private="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="basename" readable="0" private="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="module" readable="0" private="1">
+        <type name="GModule.Module" c:type="GModule*"/>
+      </field>
+      <field name="file_size" readable="0" private="1">
+        <type name="gsize" c:type="off_t"/>
+      </field>
+      <field name="file_mtime" readable="0" private="1">
+        <type name="glong" c:type="time_t"/>
+      </field>
+      <field name="registered" readable="0" private="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="PluginPrivate" c:type="GstPluginPrivate*"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </class>
+    <record name="PluginClass"
+            c:type="GstPluginClass"
+            glib:is-gtype-struct-for="Plugin">
+      <field name="object_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="PluginDependencyFlags"
+              version="0.10.22"
+              c:type="GstPluginDependencyFlags">
+      <doc xml:whitespace="preserve">Flags used in connection with gst_plugin_add_dependency().</doc>
+      <member name="none"
+              value="0"
+              c:identifier="GST_PLUGIN_DEPENDENCY_FLAG_NONE"/>
+      <member name="recurse"
+              value="1"
+              c:identifier="GST_PLUGIN_DEPENDENCY_FLAG_RECURSE"/>
+      <member name="paths_are_default_only"
+              value="2"
+              c:identifier="GST_PLUGIN_DEPENDENCY_FLAG_PATHS_ARE_DEFAULT_ONLY"/>
+      <member name="file_name_is_suffix"
+              value="4"
+              c:identifier="GST_PLUGIN_DEPENDENCY_FLAG_FILE_NAME_IS_SUFFIX"/>
+    </bitfield>
+    <record name="PluginDesc" c:type="GstPluginDesc">
+      <doc xml:whitespace="preserve">A plugin should export a variable of this type called plugin_desc. The plugin
+loader will use the data provided there to initialize the plugin.
+BSD, MIT/X11, Proprietary, unknown.</doc>
+      <field name="major_version" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="minor_version" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="description" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="plugin_init" writable="1">
+        <type name="PluginInitFunc" c:type="GstPluginInitFunc"/>
+      </field>
+      <field name="version" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="license" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="source" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="package" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="origin" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="release_datetime" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <enumeration name="PluginError" c:type="GstPluginError">
+      <doc xml:whitespace="preserve">The plugin loading errors</doc>
+      <member name="module" value="0" c:identifier="GST_PLUGIN_ERROR_MODULE"/>
+      <member name="dependencies"
+              value="1"
+              c:identifier="GST_PLUGIN_ERROR_DEPENDENCIES"/>
+      <member name="name_mismatch"
+              value="2"
+              c:identifier="GST_PLUGIN_ERROR_NAME_MISMATCH"/>
+    </enumeration>
+    <class name="PluginFeature"
+           c:symbol-prefix="plugin_feature"
+           c:type="GstPluginFeature"
+           parent="Object"
+           abstract="1"
+           glib:type-name="GstPluginFeature"
+           glib:get-type="gst_plugin_feature_get_type"
+           glib:type-struct="PluginFeatureClass">
+      <doc xml:whitespace="preserve">This is a base class for anything that can be added to a #GstPlugin.</doc>
+      <function name="list_copy"
+                c:identifier="gst_plugin_feature_list_copy"
+                version="0.10.26">
+        <doc xml:whitespace="preserve">Copies the list of features. Caller should call @gst_plugin_feature_list_free
+when done with the list.
+with each feature's reference count incremented.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a copy of @list,</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="PluginFeature"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="none">
+            <doc xml:whitespace="preserve">list of #GstPluginFeature</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="PluginFeature"/>
+            </type>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="list_debug"
+                c:identifier="gst_plugin_feature_list_debug"
+                version="0.10.31">
+        <doc xml:whitespace="preserve">Debug the plugin feature names in @list.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GList of plugin features</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="PluginFeature"/>
+            </type>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="list_free" c:identifier="gst_plugin_feature_list_free">
+        <doc xml:whitespace="preserve">Unrefs each member of @list, then frees the list.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="full">
+            <doc xml:whitespace="preserve">list of #GstPluginFeature</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="PluginFeature"/>
+            </type>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="rank_compare_func"
+                c:identifier="gst_plugin_feature_rank_compare_func"
+                version="0.10.31">
+        <doc xml:whitespace="preserve">Compares the two given #GstPluginFeature instances. This function can be
+used as a #GCompareFunc when sorting by rank and then by name.
+equal but the name of p1 comes before the name of p2; zero if the rank
+and names are equal; positive value if the rank of p1 &lt; the rank of p2 or the
+ranks are equal but the name of p2 comes after the name of p1</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">negative value if the rank of p1 &gt; the rank of p2 or the ranks are</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="p1" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstPluginFeature</doc>
+            <type name="gpointer" c:type="gconstpointer"/>
+          </parameter>
+          <parameter name="p2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstPluginFeature</doc>
+            <type name="gpointer" c:type="gconstpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="check_version"
+              c:identifier="gst_plugin_feature_check_version">
+        <doc xml:whitespace="preserve">Checks whether the given plugin feature is at least
+the required version
+the required version, otherwise #FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">#TRUE if the plugin feature has at least</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="min_major" transfer-ownership="none">
+            <doc xml:whitespace="preserve">minimum required major version</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="min_minor" transfer-ownership="none">
+            <doc xml:whitespace="preserve">minimum required minor version</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="min_micro" transfer-ownership="none">
+            <doc xml:whitespace="preserve">minimum required micro version</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_name" c:identifier="gst_plugin_feature_get_name">
+        <doc xml:whitespace="preserve">Gets the name of a plugin feature.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_rank" c:identifier="gst_plugin_feature_get_rank">
+        <doc xml:whitespace="preserve">Gets the rank of a plugin feature.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The rank of the feature</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="load" c:identifier="gst_plugin_feature_load">
+        <doc xml:whitespace="preserve">Loads the plugin containing @feature if it's not already loaded. @feature is
+unaffected; use the return value instead.
+Normally this function is used like this:
+|[
+GstPluginFeature *loaded_feature;
+loaded_feature = gst_plugin_feature_load (feature);
+// presumably, we're no longer interested in the potentially-unloaded feature
+gst_object_unref (feature);
+feature = loaded_feature;
+]|</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a reference to the loaded feature, or NULL on error</doc>
+          <type name="PluginFeature" c:type="GstPluginFeature*"/>
+        </return-value>
+      </method>
+      <method name="set_name" c:identifier="gst_plugin_feature_set_name">
+        <doc xml:whitespace="preserve">Sets the name of a plugin feature. The name uniquely identifies a feature
+within all features of the same type. Renaming a plugin feature is not
+allowed. A copy is made of the name so you should free the supplied @name
+after calling this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_rank" c:identifier="gst_plugin_feature_set_rank">
+        <doc xml:whitespace="preserve">Specifies a rank for a plugin feature, so that autoplugging uses
+the most appropriate feature.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rank" transfer-ownership="none">
+            <doc xml:whitespace="preserve">rank value - higher number means more priority rank</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="type_name_filter"
+              c:identifier="gst_plugin_feature_type_name_filter">
+        <doc xml:whitespace="preserve">Compares type and name of plugin feature. Can be used with gst_filter_run().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if equal.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type and name to check against</doc>
+            <type name="TypeNameData" c:type="GstTypeNameData*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="loaded" readable="0" private="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="name" readable="0" private="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="rank" readable="0" private="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="plugin_name" readable="0" private="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="plugin" readable="0" private="1">
+        <type name="Plugin" c:type="GstPlugin*"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </class>
+    <record name="PluginFeatureClass"
+            c:type="GstPluginFeatureClass"
+            glib:is-gtype-struct-for="PluginFeature">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <callback name="PluginFeatureFilter" c:type="GstPluginFeatureFilter">
+      <doc xml:whitespace="preserve">A function that can be used with e.g. gst_registry_feature_filter()
+to get a list of pluginfeature that match certain criteria.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE for a positive match, %FALSE otherwise</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="feature" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the pluginfeature to check</doc>
+          <type name="PluginFeature" c:type="GstPluginFeature*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <doc xml:whitespace="preserve">the user_data that has been passed on e.g. gst_registry_feature_filter()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PluginFilter" c:type="GstPluginFilter">
+      <doc xml:whitespace="preserve">A function that can be used with e.g. gst_registry_plugin_filter()
+to get a list of plugins that match certain criteria.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE for a positive match, FALSE otherwise</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="plugin" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the plugin to check</doc>
+          <type name="Plugin" c:type="GstPlugin*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <doc xml:whitespace="preserve">the user_data that has been passed on e.g. gst_registry_plugin_filter()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="PluginFlags" c:type="GstPluginFlags">
+      <doc xml:whitespace="preserve">The plugin loading state</doc>
+      <member name="cached" value="1" c:identifier="GST_PLUGIN_FLAG_CACHED"/>
+      <member name="blacklisted"
+              value="2"
+              c:identifier="GST_PLUGIN_FLAG_BLACKLISTED"/>
+    </bitfield>
+    <callback name="PluginInitFullFunc"
+              c:type="GstPluginInitFullFunc"
+              version="0.10.24">
+      <doc xml:whitespace="preserve">A plugin should provide a pointer to a function of either #GstPluginInitFunc
+or this type in the plugin_desc struct.
+The function will be called by the loader at startup. One would then
+register each #GstPluginFeature. This version allows
+user data to be passed to init function (useful for bindings).</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if plugin initialised successfully</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="plugin" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The plugin object</doc>
+          <type name="Plugin" c:type="GstPlugin*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <doc xml:whitespace="preserve">extra data</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PluginInitFunc" c:type="GstPluginInitFunc">
+      <doc xml:whitespace="preserve">A plugin should provide a pointer to a function of this type in the
+plugin_desc struct.
+This function will be called by the loader at startup. One would then
+register each #GstPluginFeature.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if plugin initialised successfully</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="plugin" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The plugin object</doc>
+          <type name="Plugin" c:type="GstPlugin*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="PluginPrivate" c:type="GstPluginPrivate" disguised="1">
+    </record>
+    <record name="Poll" c:type="GstPoll" disguised="1">
+      <doc xml:whitespace="preserve">A #GstPoll keeps track of file descriptors much like fd_set (used with
+select()) or a struct pollfd array (used with poll()). Once created with
+gst_poll_new(), the set can be used to wait for file descriptors to be
+readable and/or writeable. It is possible to make this wait be controlled
+by specifying %TRUE for the @controllable flag when creating the set (or
+later calling gst_poll_set_controllable()).
+New file descriptors are added to the set using gst_poll_add_fd(), and
+removed using gst_poll_remove_fd(). Controlling which file descriptors
+should be waited for to become readable and/or writeable are done using
+gst_poll_fd_ctl_read() and gst_poll_fd_ctl_write().
+Use gst_poll_wait() to wait for the file descriptors to actually become
+readable and/or writeable, or to timeout if no file descriptor is available
+in time. The wait can be controlled by calling gst_poll_restart() and
+gst_poll_set_flushing().
+Once the file descriptor set has been waited for, one can use
+gst_poll_fd_has_closed() to see if the file descriptor has been closed,
+gst_poll_fd_has_error() to see if it has generated an error,
+gst_poll_fd_can_read() to see if it is possible to read from the file
+descriptor, and gst_poll_fd_can_write() to see if it is possible to
+write to it.</doc>
+      <method name="add_fd" c:identifier="gst_poll_add_fd" version="0.10.18">
+        <doc xml:whitespace="preserve">Add a file descriptor to the file descriptor set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the file descriptor was successfully added to the set.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file descriptor.</doc>
+            <type name="PollFD" c:type="GstPollFD*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fd_can_read"
+              c:identifier="gst_poll_fd_can_read"
+              version="0.10.18">
+        <doc xml:whitespace="preserve">Check if @fd in @set has data to be read.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the descriptor has data to be read.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file descriptor.</doc>
+            <type name="PollFD" c:type="GstPollFD*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fd_can_write"
+              c:identifier="gst_poll_fd_can_write"
+              version="0.10.18">
+        <doc xml:whitespace="preserve">Check if @fd in @set can be used for writing.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the descriptor can be used for writing.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file descriptor.</doc>
+            <type name="PollFD" c:type="GstPollFD*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fd_ctl_read"
+              c:identifier="gst_poll_fd_ctl_read"
+              version="0.10.18">
+        <doc xml:whitespace="preserve">Control whether the descriptor @fd in @set will be monitored for
+readability.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the descriptor was successfully updated.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file descriptor.</doc>
+            <type name="PollFD" c:type="GstPollFD*"/>
+          </parameter>
+          <parameter name="active" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a new status.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fd_ctl_write"
+              c:identifier="gst_poll_fd_ctl_write"
+              version="0.10.18">
+        <doc xml:whitespace="preserve">Control whether the descriptor @fd in @set will be monitored for
+writability.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the descriptor was successfully updated.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file descriptor.</doc>
+            <type name="PollFD" c:type="GstPollFD*"/>
+          </parameter>
+          <parameter name="active" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a new status.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fd_has_closed"
+              c:identifier="gst_poll_fd_has_closed"
+              version="0.10.18">
+        <doc xml:whitespace="preserve">Check if @fd in @set has closed the connection.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the connection was closed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file descriptor.</doc>
+            <type name="PollFD" c:type="GstPollFD*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fd_has_error"
+              c:identifier="gst_poll_fd_has_error"
+              version="0.10.18">
+        <doc xml:whitespace="preserve">Check if @fd in @set has an error.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the descriptor has an error.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file descriptor.</doc>
+            <type name="PollFD" c:type="GstPollFD*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fd_ignored"
+              c:identifier="gst_poll_fd_ignored"
+              version="0.10.18">
+        <doc xml:whitespace="preserve">Mark @fd as ignored so that the next call to gst_poll_wait() will yield
+the same result for @fd as last time. This function must be called if no
+operation (read/write/recv/send/etc.) will be performed on @fd before
+the next call to gst_poll_wait().
+The reason why this is needed is because the underlying implementation
+might not allow querying the fd more than once between calls to one of
+the re-enabling operations.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file descriptor.</doc>
+            <type name="PollFD" c:type="GstPollFD*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free" c:identifier="gst_poll_free" version="0.10.18">
+        <doc xml:whitespace="preserve">Free a file descriptor set.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_read_gpollfd"
+              c:identifier="gst_poll_get_read_gpollfd"
+              version="0.10.32">
+        <doc xml:whitespace="preserve">Get a GPollFD for the reading part of the control socket. This is useful when
+integrating with a GSource and GMainLoop.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GPollFD</doc>
+            <type name="GLib.PollFD" c:type="GPollFD*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_control"
+              c:identifier="gst_poll_read_control"
+              version="0.10.23">
+        <doc xml:whitespace="preserve">Read a byte from the control socket of the controllable @set.
+This function is mostly useful for timer #GstPoll objects created with
+gst_poll_new_timer(). 
+was no byte to read.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success. %FALSE when @set is not controllable or when there</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="remove_fd"
+              c:identifier="gst_poll_remove_fd"
+              version="0.10.18">
+        <doc xml:whitespace="preserve">Remove a file descriptor from the file descriptor set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the file descriptor was successfully removed from the set.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file descriptor.</doc>
+            <type name="PollFD" c:type="GstPollFD*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="restart" c:identifier="gst_poll_restart" version="0.10.18">
+        <doc xml:whitespace="preserve">Restart any gst_poll_wait() that is in progress. This function is typically
+used after adding or removing descriptors to @set.
+If @set is not controllable, then this call will have no effect.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_controllable"
+              c:identifier="gst_poll_set_controllable"
+              version="0.10.18">
+        <doc xml:whitespace="preserve">When @controllable is %TRUE, this function ensures that future calls to
+gst_poll_wait() will be affected by gst_poll_restart() and
+gst_poll_set_flushing().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the controllability of @set could be updated.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="controllable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new controllable state.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_flushing"
+              c:identifier="gst_poll_set_flushing"
+              version="0.10.18">
+        <doc xml:whitespace="preserve">When @flushing is %TRUE, this function ensures that current and future calls
+to gst_poll_wait() will return -1, with errno set to EBUSY.
+Unsetting the flushing state will restore normal operation of @set.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flushing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new flushing state.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="wait" c:identifier="gst_poll_wait" version="0.10.18">
+        <doc xml:whitespace="preserve">Wait for activity on the file descriptors in @set. This function waits up to
+the specified @timeout.  A timeout of #GST_CLOCK_TIME_NONE waits forever.
+For #GstPoll objects created with gst_poll_new(), this function can only be
+called from a single thread at a time.  If called from multiple threads,
+-1 will be returned with errno set to EPERM.
+This is not true for timer #GstPoll objects created with
+gst_poll_new_timer(), where it is allowed to have multiple threads waiting
+simultaneously.
+activity was detected after @timeout. If an error occurs, -1 is returned
+and errno is set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of #GstPollFD in @set that have activity or 0 when no</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeout" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a timeout in nanoseconds.</doc>
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="write_control"
+              c:identifier="gst_poll_write_control"
+              version="0.10.23">
+        <doc xml:whitespace="preserve">Write a byte to the control socket of the controllable @set.
+This function is mostly useful for timer #GstPoll objects created with
+gst_poll_new_timer(). 
+It will make any current and future gst_poll_wait() function return with
+1, meaning the control socket is set. After an equal amount of calls to
+gst_poll_read_control() have been performed, calls to gst_poll_wait() will
+block again until their timeout expired.
+byte could not be written.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE on success. %FALSE when @set is not controllable or when the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="PollFD" c:type="GstPollFD">
+      <doc xml:whitespace="preserve">A file descriptor object.</doc>
+      <field name="fd" writable="1">
+        <type name="gint" c:type="int"/>
+      </field>
+      <field name="idx" readable="0" private="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <method name="init" c:identifier="gst_poll_fd_init" version="0.10.18">
+        <doc xml:whitespace="preserve">Initializes @fd. Alternatively you can initialize it with
+#GST_POLL_FD_INIT.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <interface name="Preset"
+               c:symbol-prefix="preset"
+               c:type="GstPreset"
+               glib:type-name="GstPreset"
+               glib:get-type="gst_preset_get_type"
+               glib:type-struct="PresetInterface">
+      <doc xml:whitespace="preserve">This interface offers methods to query and manipulate parameter preset sets.
+A preset is a bunch of property settings, together with meta data and a name.
+The name of a preset serves as key for subsequent method calls to manipulate
+single presets.
+All instances of one type will share the list of presets. The list is created
+on demand, if presets are not used, the list is not created.
+The interface comes with a default implementation that serves most plugins.
+Wrapper plugins will override most methods to implement support for the
+native preset format of those wrapped plugins.
+One method that is useful to be overridden is gst_preset_get_property_names().
+With that one can control which properties are saved and in which order.</doc>
+      <virtual-method name="delete_preset"
+                      invoker="delete_preset"
+                      version="0.10.20">
+        <doc xml:whitespace="preserve">Delete the given preset.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE for success, %FALSE if e.g. there is no preset with that @name</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">preset name to remove</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_meta" invoker="get_meta" version="0.10.20">
+        <doc xml:whitespace="preserve">Gets the @value for an existing meta data @tag. Meta data @tag names can be
+something like e.g. "comment". Returned values need to be released when done.
+or no value for the given @tag</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE for success, %FALSE if e.g. there is no preset with that @name</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">preset name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">meta data item name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">value</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_preset_names"
+                      invoker="get_preset_names"
+                      version="0.10.20">
+        <doc xml:whitespace="preserve">Get a copy of preset names as a NULL terminated string array.
+list with names, ue g_strfreev() after usage.</doc>
+        <return-value transfer-ownership="full">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_property_names"
+                      invoker="get_property_names"
+                      version="0.10.20">
+        <doc xml:whitespace="preserve">Get a the names of the GObject properties that can be used for presets.
+array of property names which should be freed with g_strfreev() after use.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">an</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="load_preset"
+                      invoker="load_preset"
+                      version="0.10.20">
+        <doc xml:whitespace="preserve">Load the given preset.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE for success, %FALSE if e.g. there is no preset with that @name</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">preset name to load</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="rename_preset"
+                      invoker="rename_preset"
+                      version="0.10.20">
+        <doc xml:whitespace="preserve">Renames a preset. If there is already a preset by the @new_name it will be
+overwritten.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE for success, %FALSE if e.g. there is no preset with @old_name</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="old_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">current preset name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="new_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new preset name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="save_preset"
+                      invoker="save_preset"
+                      version="0.10.20">
+        <doc xml:whitespace="preserve">Save the current object settings as a preset under the given name. If there
+is already a preset by this @name it will be overwritten.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE for success, %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">preset name to save</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_meta" invoker="set_meta" version="0.10.20">
+        <doc xml:whitespace="preserve">Sets a new @value for an existing meta data item or adds a new item. Meta
+data @tag names can be something like e.g. "comment". Supplying %NULL for the</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE for success, %FALSE if e.g. there is no preset with that @name</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">preset name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">meta data item name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new value</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="delete_preset"
+              c:identifier="gst_preset_delete_preset"
+              version="0.10.20">
+        <doc xml:whitespace="preserve">Delete the given preset.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE for success, %FALSE if e.g. there is no preset with that @name</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">preset name to remove</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_meta"
+              c:identifier="gst_preset_get_meta"
+              version="0.10.20">
+        <doc xml:whitespace="preserve">Gets the @value for an existing meta data @tag. Meta data @tag names can be
+something like e.g. "comment". Returned values need to be released when done.
+or no value for the given @tag</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE for success, %FALSE if e.g. there is no preset with that @name</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">preset name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">meta data item name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">value</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_preset_names"
+              c:identifier="gst_preset_get_preset_names"
+              version="0.10.20">
+        <doc xml:whitespace="preserve">Get a copy of preset names as a NULL terminated string array.
+list with names, ue g_strfreev() after usage.</doc>
+        <return-value transfer-ownership="full">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="get_property_names"
+              c:identifier="gst_preset_get_property_names"
+              version="0.10.20">
+        <doc xml:whitespace="preserve">Get a the names of the GObject properties that can be used for presets.
+array of property names which should be freed with g_strfreev() after use.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">an</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="load_preset"
+              c:identifier="gst_preset_load_preset"
+              version="0.10.20">
+        <doc xml:whitespace="preserve">Load the given preset.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE for success, %FALSE if e.g. there is no preset with that @name</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">preset name to load</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="rename_preset"
+              c:identifier="gst_preset_rename_preset"
+              version="0.10.20">
+        <doc xml:whitespace="preserve">Renames a preset. If there is already a preset by the @new_name it will be
+overwritten.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE for success, %FALSE if e.g. there is no preset with @old_name</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="old_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">current preset name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="new_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new preset name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="save_preset"
+              c:identifier="gst_preset_save_preset"
+              version="0.10.20">
+        <doc xml:whitespace="preserve">Save the current object settings as a preset under the given name. If there
+is already a preset by this @name it will be overwritten.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE for success, %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">preset name to save</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_meta"
+              c:identifier="gst_preset_set_meta"
+              version="0.10.20">
+        <doc xml:whitespace="preserve">Sets a new @value for an existing meta data item or adds a new item. Meta
+data @tag names can be something like e.g. "comment". Supplying %NULL for the</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE for success, %FALSE if e.g. there is no preset with that @name</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">preset name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">meta data item name</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new value</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="PresetInterface"
+            c:type="GstPresetInterface"
+            glib:is-gtype-struct-for="Preset">
+      <doc xml:whitespace="preserve">#GstPreset interface.</doc>
+      <field name="parent">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="get_preset_names">
+        <callback name="get_preset_names">
+          <return-value transfer-ownership="full">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </return-value>
+          <parameters>
+            <parameter name="preset" transfer-ownership="none">
+              <type name="Preset" c:type="GstPreset*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_property_names">
+        <callback name="get_property_names">
+          <return-value transfer-ownership="full">
+            <doc xml:whitespace="preserve">an</doc>
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </return-value>
+          <parameters>
+            <parameter name="preset" transfer-ownership="none">
+              <type name="Preset" c:type="GstPreset*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="load_preset">
+        <callback name="load_preset">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE for success, %FALSE if e.g. there is no preset with that @name</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="preset" transfer-ownership="none">
+              <type name="Preset" c:type="GstPreset*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">preset name to load</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="save_preset">
+        <callback name="save_preset">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE for success, %FALSE</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="preset" transfer-ownership="none">
+              <type name="Preset" c:type="GstPreset*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">preset name to save</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="rename_preset">
+        <callback name="rename_preset">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE for success, %FALSE if e.g. there is no preset with @old_name</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="preset" transfer-ownership="none">
+              <type name="Preset" c:type="GstPreset*"/>
+            </parameter>
+            <parameter name="old_name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">current preset name</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="new_name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">new preset name</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="delete_preset">
+        <callback name="delete_preset">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE for success, %FALSE if e.g. there is no preset with that @name</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="preset" transfer-ownership="none">
+              <type name="Preset" c:type="GstPreset*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">preset name to remove</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_meta">
+        <callback name="set_meta">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE for success, %FALSE if e.g. there is no preset with that @name</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="preset" transfer-ownership="none">
+              <type name="Preset" c:type="GstPreset*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">preset name</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="tag" transfer-ownership="none">
+              <doc xml:whitespace="preserve">meta data item name</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <doc xml:whitespace="preserve">new value</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_meta">
+        <callback name="get_meta">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE for success, %FALSE if e.g. there is no preset with that @name</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="preset" transfer-ownership="none">
+              <type name="Preset" c:type="GstPreset*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <doc xml:whitespace="preserve">preset name</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="tag" transfer-ownership="none">
+              <doc xml:whitespace="preserve">meta data item name</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="value"
+                       direction="out"
+                       caller-allocates="0"
+                       transfer-ownership="full">
+              <doc xml:whitespace="preserve">value</doc>
+              <type name="utf8" c:type="gchar**"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <enumeration name="ProgressType"
+                 version="0.10.33"
+                 c:type="GstProgressType">
+      <doc xml:whitespace="preserve">The type of a %GST_MESSAGE_PROGRESS. The progress messages inform the
+application of the status of assynchronous tasks.</doc>
+      <member name="start" value="0" c:identifier="GST_PROGRESS_TYPE_START"/>
+      <member name="continue"
+              value="1"
+              c:identifier="GST_PROGRESS_TYPE_CONTINUE"/>
+      <member name="complete"
+              value="2"
+              c:identifier="GST_PROGRESS_TYPE_COMPLETE"/>
+      <member name="canceled"
+              value="3"
+              c:identifier="GST_PROGRESS_TYPE_CANCELED"/>
+      <member name="error" value="4" c:identifier="GST_PROGRESS_TYPE_ERROR"/>
+    </enumeration>
+    <class name="ProxyPad"
+           c:symbol-prefix="proxy_pad"
+           c:type="GstProxyPad"
+           parent="Pad"
+           glib:type-name="GstProxyPad"
+           glib:get-type="gst_proxy_pad_get_type"
+           glib:type-struct="ProxyPadClass">
+      <field name="pad">
+        <type name="Pad" c:type="GstPad"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="ProxyPadPrivate" c:type="GstProxyPadPrivate*"/>
+      </field>
+    </class>
+    <record name="ProxyPadClass"
+            c:type="GstProxyPadClass"
+            glib:is-gtype-struct-for="ProxyPad">
+      <field name="parent_class">
+        <type name="PadClass" c:type="GstPadClass"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="1">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <record name="ProxyPadPrivate" c:type="GstProxyPadPrivate" disguised="1">
+    </record>
+    <enumeration name="QOSType" version="0.10.33" c:type="GstQOSType">
+      <doc xml:whitespace="preserve">The different types of QoS events that can be given to the 
+gst_event_new_qos_full() method.</doc>
+      <member name="overflow" value="0" c:identifier="GST_QOS_TYPE_OVERFLOW"/>
+      <member name="underflow"
+              value="1"
+              c:identifier="GST_QOS_TYPE_UNDERFLOW"/>
+      <member name="throttle" value="2" c:identifier="GST_QOS_TYPE_THROTTLE"/>
+    </enumeration>
+    <class name="Query"
+           c:symbol-prefix="query"
+           c:type="GstQuery"
+           parent="MiniObject"
+           glib:type-name="GstQuery"
+           glib:get-type="gst_query_get_type"
+           glib:type-struct="QueryClass"
+           glib:fundamental="1">
+      <doc xml:whitespace="preserve">GstQuery functions are used to register new query types to the gstreamer
+core and use them.
+Queries can be performed on pads (gst_pad_query()) and elements
+(gst_element_query()). Please note that some queries might need a running
+pipeline to work.
+Queries can be created using the gst_query_new_*() functions.
+Query values can be set using gst_query_set_*(), and parsed using
+gst_query_parse_*() helpers.
+The following example shows how to query the duration of a pipeline:
+&lt;example&gt;
+&lt;title&gt;Query duration on a pipeline&lt;/title&gt;
+&lt;programlisting&gt;
+GstQuery *query;
+gboolean res;
+query = gst_query_new_duration (GST_FORMAT_TIME);
+res = gst_element_query (pipeline, query);
+if (res) {
+gint64 duration;
+gst_query_parse_duration (query, NULL, &amp;amp;duration);
+g_print ("duration = %"GST_TIME_FORMAT, GST_TIME_ARGS (duration));
+}
+else {
+g_print ("duration query failed...");
+}
+gst_query_unref (query);
+&lt;/programlisting&gt;
+&lt;/example&gt;
+Last reviewed on 2006-02-14 (0.10.4)</doc>
+      <constructor name="new_application"
+                   c:identifier="gst_query_new_application">
+        <doc xml:whitespace="preserve">Constructs a new custom application query object. Use gst_query_unref()
+when done with it.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstQuery</doc>
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the query type</doc>
+            <type name="QueryType" c:type="GstQueryType"/>
+          </parameter>
+          <parameter name="structure" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a structure for the query</doc>
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_buffering"
+                   c:identifier="gst_query_new_buffering"
+                   version="0.10.20">
+        <doc xml:whitespace="preserve">Constructs a new query object for querying the buffering status of
+a stream.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstQuery</doc>
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the default #GstFormat for the new query</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_convert" c:identifier="gst_query_new_convert">
+        <doc xml:whitespace="preserve">Constructs a new convert query object. Use gst_query_unref()
+when done with it. A convert query is used to ask for a conversion between
+one format and another.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GstQuery</doc>
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src_format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the source #GstFormat for the new query</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value to convert</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="dest_format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the target #GstFormat</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_duration" c:identifier="gst_query_new_duration">
+        <doc xml:whitespace="preserve">Constructs a new stream duration query object to query in the given format.
+Use gst_query_unref() when done with it. A duration query will give the
+total length of the stream.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstQuery</doc>
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstFormat for this duration query</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_formats"
+                   c:identifier="gst_query_new_formats"
+                   version="0.10.4">
+        <doc xml:whitespace="preserve">Constructs a new query object for querying formats of
+the stream.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstQuery</doc>
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_latency"
+                   c:identifier="gst_query_new_latency"
+                   version="0.10.12">
+        <doc xml:whitespace="preserve">Constructs a new latency query object.
+Use gst_query_unref() when done with it. A latency query is usually performed
+by sinks to compensate for additional latency introduced by elements in the
+pipeline.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GstQuery</doc>
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_position" c:identifier="gst_query_new_position">
+        <doc xml:whitespace="preserve">Constructs a new query stream position query object. Use gst_query_unref()
+when done with it. A position query is used to query the current position
+of playback in the streams, in some format.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstQuery</doc>
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the default #GstFormat for the new query</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_seeking" c:identifier="gst_query_new_seeking">
+        <doc xml:whitespace="preserve">Constructs a new query object for querying seeking properties of
+the stream.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstQuery</doc>
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the default #GstFormat for the new query</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_segment" c:identifier="gst_query_new_segment">
+        <doc xml:whitespace="preserve">Constructs a new segment query object. Use gst_query_unref()
+when done with it. A segment query is used to discover information about the
+currently configured segment for playback.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstQuery</doc>
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstFormat for the new query</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_uri"
+                   c:identifier="gst_query_new_uri"
+                   version="0.10.22">
+        <doc xml:whitespace="preserve">Constructs a new query URI query object. Use gst_query_unref()
+when done with it. An URI query is used to query the current URI
+that is used by the source or sink.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstQuery</doc>
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+      </constructor>
+      <function name="type_get_by_nick"
+                c:identifier="gst_query_type_get_by_nick">
+        <doc xml:whitespace="preserve">Get the query type registered with @nick.
+if the query was not registered.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The query registered with @nick or #GST_QUERY_NONE</doc>
+          <type name="QueryType" c:type="GstQueryType"/>
+        </return-value>
+        <parameters>
+          <parameter name="nick" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The nick of the query</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="type_get_details"
+                c:identifier="gst_query_type_get_details">
+        <doc xml:whitespace="preserve">Get details about the given #GstQueryType.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GstQueryTypeDefinition for @type or NULL on failure.</doc>
+          <type name="QueryTypeDefinition" c:type="GstQueryTypeDefinition*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstQueryType</doc>
+            <type name="QueryType" c:type="GstQueryType"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="type_get_name" c:identifier="gst_query_type_get_name">
+        <doc xml:whitespace="preserve">Get a printable name for the given query type. Do not modify or free.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a reference to the static name of the query.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="query" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the query type</doc>
+            <type name="QueryType" c:type="GstQueryType"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="type_iterate_definitions"
+                c:identifier="gst_query_type_iterate_definitions"
+                introspectable="0">
+        <doc xml:whitespace="preserve">Get a #GstIterator of all the registered query types. The definitions
+iterated over are read only.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GstIterator of #GstQueryTypeDefinition.</doc>
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </function>
+      <function name="type_register" c:identifier="gst_query_type_register">
+        <doc xml:whitespace="preserve">Create a new GstQueryType based on the nick or return an
+already registered query with that nick
+with the same nick.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A new GstQueryType or an already registered query</doc>
+          <type name="QueryType" c:type="GstQueryType"/>
+        </return-value>
+        <parameters>
+          <parameter name="nick" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The nick of the new query</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="description" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The description of the new query</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="type_to_quark" c:identifier="gst_query_type_to_quark">
+        <doc xml:whitespace="preserve">Get the unique quark for the given query type.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the quark associated with the query type</doc>
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </return-value>
+        <parameters>
+          <parameter name="query" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the query type</doc>
+            <type name="QueryType" c:type="GstQueryType"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="types_contains" c:identifier="gst_query_types_contains">
+        <doc xml:whitespace="preserve">See if the given #GstQueryType is inside the @types query types array.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the type is found inside the array</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="types" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The query array to search</doc>
+            <type name="QueryType" c:type="GstQueryType*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstQueryType to find</doc>
+            <type name="QueryType" c:type="GstQueryType"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="add_buffering_range"
+              c:identifier="gst_query_add_buffering_range"
+              version="0.10.31">
+        <doc xml:whitespace="preserve">Set the buffering-ranges array field in @query. The current last
+start position of the array should be inferior to @start.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #gboolean indicating if the range was added or not.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">start position of the range</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <doc xml:whitespace="preserve">stop position of the range</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_n_buffering_ranges"
+              c:identifier="gst_query_get_n_buffering_ranges"
+              version="0.10.31">
+        <doc xml:whitespace="preserve">Retrieve the number of values currently stored in the
+buffered-ranges array of the query's structure.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the range array size as a #guint.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_structure" c:identifier="gst_query_get_structure">
+        <doc xml:whitespace="preserve">Get the structure of a query.
+still owned by the query and will therefore be freed when the query
+is unreffed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstStructure of the query. The structure is</doc>
+          <type name="Structure" c:type="GstStructure*"/>
+        </return-value>
+      </method>
+      <method name="parse_buffering_percent"
+              c:identifier="gst_query_parse_buffering_percent"
+              version="0.10.20">
+        <doc xml:whitespace="preserve">Get the percentage of buffered data. This is a value between 0 and 100.
+The @busy indicator is %TRUE when the buffering is in progress.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="busy"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">if buffering is busy, or NULL</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="percent"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a buffering percent, or NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_buffering_range"
+              c:identifier="gst_query_parse_buffering_range"
+              version="0.10.20">
+        <doc xml:whitespace="preserve">Parse an available query, writing the format into @format, and
+other results into the passed parameters, if the respective parameters
+are non-NULL</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the format to set for the @segment_start and @segment_end values, or NULL</doc>
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="start"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the start to set, or NULL</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="stop"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the stop to set, or NULL</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="estimated_total"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">estimated total amount of download time, or NULL</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_buffering_stats"
+              c:identifier="gst_query_parse_buffering_stats"
+              version="0.10.20">
+        <doc xml:whitespace="preserve">Extracts the buffering stats values from @query.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">a buffering mode, or NULL</doc>
+            <type name="BufferingMode" c:type="GstBufferingMode*"/>
+          </parameter>
+          <parameter name="avg_in"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the average input rate, or NULL</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="avg_out"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the average output rat, or NULLe</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="buffering_left"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">amount of buffering time left, or NULL</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_convert" c:identifier="gst_query_parse_convert">
+        <doc xml:whitespace="preserve">Parse a convert query answer. Any of @src_format, @src_value, @dest_format,
+and @dest_value may be NULL, in which case that value is omitted.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="src_format"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the storage for the #GstFormat of the source value, or NULL</doc>
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="src_value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the storage for the source value, or NULL</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="dest_format"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the storage for the #GstFormat of the destination value, or NULL</doc>
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="dest_value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the storage for the destination value, or NULL</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_duration" c:identifier="gst_query_parse_duration">
+        <doc xml:whitespace="preserve">Parse a duration query answer. Write the format of the duration into @format,
+and the value into @duration, if the respective variables are non-NULL.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the storage for the #GstFormat of the duration value, or NULL.</doc>
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="duration"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the storage for the total duration, or NULL.</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_formats_length"
+              c:identifier="gst_query_parse_formats_length"
+              version="0.10.4">
+        <doc xml:whitespace="preserve">Parse the number of formats in the formats @query.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_formats"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">the number of formats in this query.</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_formats_nth"
+              c:identifier="gst_query_parse_formats_nth"
+              version="0.10.4">
+        <doc xml:whitespace="preserve">Parse the format query and retrieve the @nth format from it into
+set to GST_FORMAT_UNDEFINED.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="nth"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">the nth format to retrieve.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="format"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">a pointer to store the nth format</doc>
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_latency"
+              c:identifier="gst_query_parse_latency"
+              version="0.10.12">
+        <doc xml:whitespace="preserve">Parse a latency query answer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="live"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">storage for live or NULL</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="min_latency"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the storage for the min latency or NULL</doc>
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+          <parameter name="max_latency"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the storage for the max latency or NULL</doc>
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_nth_buffering_range"
+              c:identifier="gst_query_parse_nth_buffering_range"
+              version="0.10.31">
+        <doc xml:whitespace="preserve">Parse an available query and get the start and stop values stored
+at the @index of the buffered ranges array.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #gboolean indicating if the parsing succeeded.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">position in the buffered-ranges array to read</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="start"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the start position to set, or NULL</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="stop"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the stop position to set, or NULL</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_position" c:identifier="gst_query_parse_position">
+        <doc xml:whitespace="preserve">Parse a position query, writing the format into @format, and the position
+into @cur, if the respective parameters are non-NULL.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the storage for the #GstFormat of the position values (may be NULL)</doc>
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="cur"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the storage for the current position (may be NULL)</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_seeking" c:identifier="gst_query_parse_seeking">
+        <doc xml:whitespace="preserve">Parse a seeking query, writing the format into @format, and
+other results into the passed parameters, if the respective parameters
+are non-NULL</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the format to set for the @segment_start and @segment_end values, or NULL</doc>
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="seekable"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the seekable flag to set, or NULL</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="segment_start"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the segment_start to set, or NULL</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="segment_end"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the segment_end to set, or NULL</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_segment" c:identifier="gst_query_parse_segment">
+        <doc xml:whitespace="preserve">Parse a segment query answer. Any of @rate, @format, @start_value, and
+See gst_query_set_segment() for an explanation of the function arguments.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rate"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the storage for the rate of the segment, or NULL</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="format"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the storage for the #GstFormat of the values, or NULL</doc>
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="start_value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the storage for the start value, or NULL</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="stop_value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the storage for the stop value, or NULL</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_uri"
+              c:identifier="gst_query_parse_uri"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Parse an URI query, writing the URI into @uri as a newly
+allocated string, if the respective parameters are non-NULL.
+Free the string with g_free() after usage.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the storage for the current URI (may be NULL)</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_buffering_percent"
+              c:identifier="gst_query_set_buffering_percent"
+              version="0.10.20">
+        <doc xml:whitespace="preserve">Set the percentage of buffered data. This is a value between 0 and 100.
+The @busy indicator is %TRUE when the buffering is in progress.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="busy" transfer-ownership="none">
+            <doc xml:whitespace="preserve">if buffering is busy</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="percent" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a buffering percent</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_buffering_range"
+              c:identifier="gst_query_set_buffering_range"
+              version="0.10.20">
+        <doc xml:whitespace="preserve">Set the available query result fields in @query.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the format to set for the @start and @stop values</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the start to set</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the stop to set</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="estimated_total" transfer-ownership="none">
+            <doc xml:whitespace="preserve">estimated total amount of download time</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_buffering_stats"
+              c:identifier="gst_query_set_buffering_stats"
+              version="0.10.20">
+        <doc xml:whitespace="preserve">Configures the buffering stats values in @query.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a buffering mode</doc>
+            <type name="BufferingMode" c:type="GstBufferingMode"/>
+          </parameter>
+          <parameter name="avg_in" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the average input rate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="avg_out" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the average output rate</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="buffering_left" transfer-ownership="none">
+            <doc xml:whitespace="preserve">amount of buffering time left</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_convert" c:identifier="gst_query_set_convert">
+        <doc xml:whitespace="preserve">Answer a convert query by setting the requested values.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="src_format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the source #GstFormat</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="src_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the source value</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="dest_format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the destination #GstFormat</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="dest_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the destination value</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_duration" c:identifier="gst_query_set_duration">
+        <doc xml:whitespace="preserve">Answer a duration query by setting the requested value in the given format.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstFormat for the duration</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="duration" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the duration of the stream</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_formats"
+              c:identifier="gst_query_set_formats"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Set the formats query result fields in @query. The number of formats passed
+must be equal to @n_formats.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_formats" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of formats to set.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_formatsv"
+              c:identifier="gst_query_set_formatsv"
+              version="0.10.4">
+        <doc xml:whitespace="preserve">Set the formats query result fields in @query. The number of formats passed
+in the @formats array must be equal to @n_formats.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_formats" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of formats to set.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="formats" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an array containing @n_formats</doc>
+            <array length="0" c:type="GstFormat*">
+              <type name="Format" c:type="GstFormat"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_latency"
+              c:identifier="gst_query_set_latency"
+              version="0.10.12">
+        <doc xml:whitespace="preserve">Answer a latency query by setting the requested values in the given format.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="live" transfer-ownership="none">
+            <doc xml:whitespace="preserve">if there is a live element upstream</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="min_latency" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the minimal latency of the live element</doc>
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="max_latency" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the maximal latency of the live element</doc>
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_position" c:identifier="gst_query_set_position">
+        <doc xml:whitespace="preserve">Answer a position query by setting the requested value in the given format.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the requested #GstFormat</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="cur" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position to set</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_seeking" c:identifier="gst_query_set_seeking">
+        <doc xml:whitespace="preserve">Set the seeking query result fields in @query.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the format to set for the @segment_start and @segment_end values</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="seekable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the seekable flag to set</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="segment_start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the segment_start to set</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="segment_end" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the segment_end to set</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_segment" c:identifier="gst_query_set_segment">
+        <doc xml:whitespace="preserve">Answer a segment query by setting the requested values. The normal
+playback segment of a pipeline is 0 to duration at the default rate of
+1.0. If a seek was performed on the pipeline to play a different
+segment, this query will return the range specified in the last seek.
+playback range start and stop values expressed in @format.
+The values are always between 0 and the duration of the media and
+negative rates, playback will actually happen from @stop_value to</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rate" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the rate of the segment</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstFormat of the segment values (@start_value and @stop_value)</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="start_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the start value</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the stop value</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_uri"
+              c:identifier="gst_query_set_uri"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Answer a URI query by setting the requested URI.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the URI to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="mini_object">
+        <type name="MiniObject" c:type="GstMiniObject"/>
+      </field>
+      <field name="type">
+        <type name="QueryType" c:type="GstQueryType"/>
+      </field>
+      <field name="structure">
+        <type name="Structure" c:type="GstStructure*"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+    </class>
+    <record name="QueryClass"
+            c:type="GstQueryClass"
+            glib:is-gtype-struct-for="Query">
+      <field name="mini_object_class">
+        <type name="MiniObjectClass" c:type="GstMiniObjectClass"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <enumeration name="QueryType" c:type="GstQueryType">
+      <doc xml:whitespace="preserve">Standard predefined Query types</doc>
+      <member name="none" value="0" c:identifier="GST_QUERY_NONE"/>
+      <member name="position" value="1" c:identifier="GST_QUERY_POSITION"/>
+      <member name="duration" value="2" c:identifier="GST_QUERY_DURATION"/>
+      <member name="latency" value="3" c:identifier="GST_QUERY_LATENCY"/>
+      <member name="jitter" value="4" c:identifier="GST_QUERY_JITTER"/>
+      <member name="rate" value="5" c:identifier="GST_QUERY_RATE"/>
+      <member name="seeking" value="6" c:identifier="GST_QUERY_SEEKING"/>
+      <member name="segment" value="7" c:identifier="GST_QUERY_SEGMENT"/>
+      <member name="convert" value="8" c:identifier="GST_QUERY_CONVERT"/>
+      <member name="formats" value="9" c:identifier="GST_QUERY_FORMATS"/>
+      <member name="buffering" value="10" c:identifier="GST_QUERY_BUFFERING"/>
+      <member name="custom" value="11" c:identifier="GST_QUERY_CUSTOM"/>
+      <member name="uri" value="12" c:identifier="GST_QUERY_URI"/>
+    </enumeration>
+    <record name="QueryTypeDefinition" c:type="GstQueryTypeDefinition">
+      <doc xml:whitespace="preserve">A Query Type definition</doc>
+      <field name="value" writable="1">
+        <type name="QueryType" c:type="GstQueryType"/>
+      </field>
+      <field name="nick" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="description" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="quark" writable="1">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </field>
+    </record>
+    <enumeration name="Rank" c:type="GstRank">
+      <doc xml:whitespace="preserve">Element priority ranks. Defines the order in which the autoplugger (or
+similar rank-picking mechanisms, such as e.g. gst_element_make_from_uri())
+will choose this element over an alternative one with the same function.
+These constants serve as a rough guidance for defining the rank of a
+#GstPluginFeature. Any value is valid, including values bigger than</doc>
+      <member name="none" value="0" c:identifier="GST_RANK_NONE"/>
+      <member name="marginal" value="64" c:identifier="GST_RANK_MARGINAL"/>
+      <member name="secondary" value="128" c:identifier="GST_RANK_SECONDARY"/>
+      <member name="primary" value="256" c:identifier="GST_RANK_PRIMARY"/>
+    </enumeration>
+    <class name="Registry"
+           c:symbol-prefix="registry"
+           c:type="GstRegistry"
+           parent="Object"
+           glib:type-name="GstRegistry"
+           glib:get-type="gst_registry_get_type"
+           glib:type-struct="RegistryClass">
+      <doc xml:whitespace="preserve">One registry holds the metadata of a set of plugins.
+&lt;emphasis role="bold"&gt;Design:&lt;/emphasis&gt;
+The #GstRegistry object is a list of plugins and some functions for dealing
+with them. Each #GstPlugin is matched 1-1 with a file on disk, and may or may
+not be loaded at a given time. There may be multiple #GstRegistry objects,
+but the "default registry" is the only object that has any meaning to the
+core.
+The registry file is actually a cache of plugin information. This is
+unlike versions prior to 0.10, where the registry file was the primary source
+of plugin information, and was created by the gst-register command.
+The primary source, at all times, of plugin information is each plugin file
+itself. Thus, if an application wants information about a particular plugin,
+or wants to search for a feature that satisfies given criteria, the primary
+means of doing so is to load every plugin and look at the resulting
+information that is gathered in the default registry. Clearly, this is a time
+consuming process, so we cache information in the registry file. The format
+and location of the cache file is internal to gstreamer. 
+On startup, plugins are searched for in the plugin search path. The following
+locations are checked in this order:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;
+&lt;para&gt;location from --gst-plugin-path commandline option.&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;the GST_PLUGIN_PATH environment variable.&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;the GST_PLUGIN_SYSTEM_PATH environment variable.&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;default locations (if GST_PLUGIN_SYSTEM_PATH is not set). Those
+default locations are:
+&lt;filename&gt;~/.gstreamer-$GST_MAJORMINOR/plugins/&lt;/filename&gt;
+and &lt;filename&gt;$prefix/libs/gstreamer-$GST_MAJORMINOR/&lt;/filename&gt;.
+&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+The registry cache file is loaded from
+&lt;filename&gt;~/.gstreamer-$GST_MAJORMINOR/registry-$ARCH.bin&lt;/filename&gt; or the
+file listed in the GST_REGISTRY env var. One reason to change the registry
+location is for testing.
+For each plugin that is found in the plugin search path, there could be 3
+possibilities for cached information:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;
+&lt;para&gt;the cache may not contain information about a given file.&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;the cache may have stale information.&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;para&gt;the cache may have current information.&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+In the first two cases, the plugin is loaded and the cache updated. In
+addition to these cases, the cache may have entries for plugins that are not
+relevant to the current process. These are marked as not available to the
+current process. If the cache is updated for whatever reason, it is marked
+dirty.
+A dirty cache is written out at the end of initialization. Each entry is
+checked to make sure the information is minimally valid. If not, the entry is
+simply dropped.
+&lt;emphasis role="bold"&gt;Implementation notes:&lt;/emphasis&gt;
+The "cache" and "default registry" are different concepts and can represent
+different sets of plugins. For various reasons, at init time, the cache is
+stored in the default registry, and plugins not relevant to the current
+process are marked with the %GST_PLUGIN_FLAG_CACHED bit. These plugins are
+removed at the end of intitialization.</doc>
+      <function name="fork_is_enabled"
+                c:identifier="gst_registry_fork_is_enabled"
+                version="0.10.10">
+        <doc xml:whitespace="preserve">By default GStreamer will perform scanning and rebuilding of the
+registry file using a helper child process.
+Applications might want to disable this behaviour with the
+gst_registry_fork_set_enabled() function, in which case new plugins
+are scanned (and loaded) into the application process.
+rebuilding the registry.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if GStreamer will use the child helper process when</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </function>
+      <function name="fork_set_enabled"
+                c:identifier="gst_registry_fork_set_enabled"
+                version="0.10.10">
+        <doc xml:whitespace="preserve">Applications might want to disable/enable spawning of a child helper process
+when rebuilding the registry. See gst_registry_fork_is_enabled() for more
+information.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="enabled" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether rebuilding the registry can use a temporary child helper process.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="get_default" c:identifier="gst_registry_get_default">
+        <doc xml:whitespace="preserve">Retrieves the default registry. The caller does not own a reference on the
+registry, as it is alive as long as GStreamer is initialized.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The default #GstRegistry.</doc>
+          <type name="Registry" c:type="GstRegistry*"/>
+        </return-value>
+      </function>
+      <virtual-method name="feature_added">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="feature" transfer-ownership="none">
+            <type name="PluginFeature" c:type="GstPluginFeature*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="plugin_added">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="plugin" transfer-ownership="none">
+            <type name="Plugin" c:type="GstPlugin*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="add_feature" c:identifier="gst_registry_add_feature">
+        <doc xml:whitespace="preserve">Add the feature to the registry. The feature-added signal will be emitted.
+This function sinks @feature.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE on success.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="feature" transfer-ownership="full">
+            <doc xml:whitespace="preserve">the feature to add</doc>
+            <type name="PluginFeature" c:type="GstPluginFeature*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_path" c:identifier="gst_registry_add_path">
+        <doc xml:whitespace="preserve">Add the given path to the registry. The syntax of the
+path is specific to the registry. If the path has already been
+added, do nothing.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the path to add to the registry</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_plugin" c:identifier="gst_registry_add_plugin">
+        <doc xml:whitespace="preserve">Add the plugin to the registry. The plugin-added signal will be emitted.
+This function will sink @plugin.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE on success.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="plugin" transfer-ownership="full">
+            <doc xml:whitespace="preserve">the plugin to add</doc>
+            <type name="Plugin" c:type="GstPlugin*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="feature_filter" c:identifier="gst_registry_feature_filter">
+        <doc xml:whitespace="preserve">Runs a filter against all features of the plugins in the registry
+and returns a GList with the results.
+If the first flag is set, only the first match is
+returned (as a list with a single object).
+#GstPluginFeature. Use gst_plugin_feature_list_free() after usage.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GList of</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="PluginFeature"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="filter"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <doc xml:whitespace="preserve">the filter to use</doc>
+            <type name="PluginFeatureFilter" c:type="GstPluginFeatureFilter"/>
+          </parameter>
+          <parameter name="first" transfer-ownership="none">
+            <doc xml:whitespace="preserve">only return first match</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data passed to the filter function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_feature" c:identifier="gst_registry_find_feature">
+        <doc xml:whitespace="preserve">Find the pluginfeature with the given name and type in the registry.
+or NULL if the plugin was not found. gst_object_unref() after usage.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the pluginfeature with the given name and type</doc>
+          <type name="PluginFeature" c:type="GstPluginFeature*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the pluginfeature name to find</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the pluginfeature type to find</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_plugin" c:identifier="gst_registry_find_plugin">
+        <doc xml:whitespace="preserve">Find the plugin with the given name in the registry.
+The plugin will be reffed; caller is responsible for unreffing.
+plugin was not found. gst_object_unref() after usage.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the plugin with the given name or NULL if the</doc>
+          <type name="Plugin" c:type="GstPlugin*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the plugin name to find</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_feature_list"
+              c:identifier="gst_registry_get_feature_list">
+        <doc xml:whitespace="preserve">Retrieves a #GList of #GstPluginFeature of @type.
+#GstPluginFeature of @type. Use gst_plugin_feature_list_free() after use
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GList of</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="PluginFeature"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GType.</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_feature_list_by_plugin"
+              c:identifier="gst_registry_get_feature_list_by_plugin">
+        <doc xml:whitespace="preserve">Retrieves a #GList of features of the plugin with name @name.
+#GstPluginFeature. Use gst_plugin_feature_list_free() after usage.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GList of</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="PluginFeature"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a plugin name.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_feature_list_cookie"
+              c:identifier="gst_registry_get_feature_list_cookie"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Returns the registrys feature list cookie. This changes
+every time a feature is added or removed from the registry.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the feature list cookie.</doc>
+          <type name="guint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="get_path_list" c:identifier="gst_registry_get_path_list">
+        <doc xml:whitespace="preserve">Get the list of paths for the given registry.
+strings. g_list_free after use.
+MT safe.</doc>
+        <return-value transfer-ownership="container">
+          <doc xml:whitespace="preserve">A #GList of paths as</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="utf8"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_plugin_list"
+              c:identifier="gst_registry_get_plugin_list">
+        <doc xml:whitespace="preserve">Get a copy of all plugins registered in the given registry. The refcount
+of each element in the list in incremented.
+Use gst_plugin_list_free() after usage.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GList of #GstPlugin.</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="Plugin"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="lookup" c:identifier="gst_registry_lookup">
+        <doc xml:whitespace="preserve">Look up a plugin in the given registry with the given filename.
+If found, plugin is reffed.
+gst_object_unref() after usage.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #GstPlugin if found, or NULL if not.</doc>
+          <type name="Plugin" c:type="GstPlugin*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the file to look up</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_feature" c:identifier="gst_registry_lookup_feature">
+        <doc xml:whitespace="preserve">Find a #GstPluginFeature with @name in @registry.
+use gst_object_unref() after usage.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GstPluginFeature with its refcount incremented,</doc>
+          <type name="PluginFeature" c:type="GstPluginFeature*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstPluginFeature name</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="plugin_filter" c:identifier="gst_registry_plugin_filter">
+        <doc xml:whitespace="preserve">Runs a filter against all plugins in the registry and returns a #GList with
+the results. If the first flag is set, only the first match is
+returned (as a list with a single object).
+Every plugin is reffed; use gst_plugin_list_free() after use, which
+will unref again.
+Use gst_plugin_list_free() after usage.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GList of #GstPlugin.</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="Plugin"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="filter"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <doc xml:whitespace="preserve">the filter to use</doc>
+            <type name="PluginFilter" c:type="GstPluginFilter"/>
+          </parameter>
+          <parameter name="first" transfer-ownership="none">
+            <doc xml:whitespace="preserve">only return first match</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data passed to the filter function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_feature" c:identifier="gst_registry_remove_feature">
+        <doc xml:whitespace="preserve">Remove the feature from the registry.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="feature" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the feature to remove</doc>
+            <type name="PluginFeature" c:type="GstPluginFeature*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_plugin" c:identifier="gst_registry_remove_plugin">
+        <doc xml:whitespace="preserve">Remove the plugin from the registry.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="plugin" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the plugin to remove</doc>
+            <type name="Plugin" c:type="GstPlugin*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="scan_path" c:identifier="gst_registry_scan_path">
+        <doc xml:whitespace="preserve">Scan the given path for plugins to add to the registry. The syntax of the
+path is specific to the registry.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if registry changed</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the path to scan</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="xml_read_cache" c:identifier="gst_registry_xml_read_cache">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="location" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="xml_write_cache"
+              c:identifier="gst_registry_xml_write_cache">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="location" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="plugins" readable="0" private="1">
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="features" readable="0" private="1">
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="paths" readable="0" private="1">
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="cache_file" readable="0" private="1">
+        <type name="gint" c:type="int"/>
+      </field>
+      <field name="feature_hash" readable="0" private="1">
+        <type name="GLib.HashTable" c:type="GHashTable*">
+          <type name="gpointer" c:type="gpointer"/>
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="basename_hash" readable="0" private="1">
+        <type name="GLib.HashTable" c:type="GHashTable*">
+          <type name="gpointer" c:type="gpointer"/>
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="RegistryPrivate" c:type="GstRegistryPrivate*"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="1">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+      <glib:signal name="feature-added">
+        <doc xml:whitespace="preserve">Signals that a feature has been added to the registry (possibly
+replacing a previously-added one by the same name)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="feature" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the feature that has been added</doc>
+            <type name="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="plugin-added">
+        <doc xml:whitespace="preserve">Signals that a plugin has been added to the registry (possibly
+replacing a previously-added one by the same name)</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="plugin" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the plugin that has been added</doc>
+            <type name="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="RegistryClass"
+            c:type="GstRegistryClass"
+            glib:is-gtype-struct-for="Registry">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="plugin_added">
+        <callback name="plugin_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="registry" transfer-ownership="none">
+              <type name="Registry" c:type="GstRegistry*"/>
+            </parameter>
+            <parameter name="plugin" transfer-ownership="none">
+              <type name="Plugin" c:type="GstPlugin*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="feature_added">
+        <callback name="feature_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="registry" transfer-ownership="none">
+              <type name="Registry" c:type="GstRegistry*"/>
+            </parameter>
+            <parameter name="feature" transfer-ownership="none">
+              <type name="PluginFeature" c:type="GstPluginFeature*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <record name="RegistryPrivate" c:type="GstRegistryPrivate" disguised="1">
+    </record>
+    <enumeration name="ResourceError"
+                 c:type="GstResourceError"
+                 glib:error-quark="gst_resource_error_quark">
+      <doc xml:whitespace="preserve">Resource errors are for any resource used by an element:
+memory, files, network connections, process space, ...
+They're typically used by source and sink elements.</doc>
+      <member name="failed"
+              value="1"
+              c:identifier="GST_RESOURCE_ERROR_FAILED"/>
+      <member name="too_lazy"
+              value="2"
+              c:identifier="GST_RESOURCE_ERROR_TOO_LAZY"/>
+      <member name="not_found"
+              value="3"
+              c:identifier="GST_RESOURCE_ERROR_NOT_FOUND"/>
+      <member name="busy" value="4" c:identifier="GST_RESOURCE_ERROR_BUSY"/>
+      <member name="open_read"
+              value="5"
+              c:identifier="GST_RESOURCE_ERROR_OPEN_READ"/>
+      <member name="open_write"
+              value="6"
+              c:identifier="GST_RESOURCE_ERROR_OPEN_WRITE"/>
+      <member name="open_read_write"
+              value="7"
+              c:identifier="GST_RESOURCE_ERROR_OPEN_READ_WRITE"/>
+      <member name="close" value="8" c:identifier="GST_RESOURCE_ERROR_CLOSE"/>
+      <member name="read" value="9" c:identifier="GST_RESOURCE_ERROR_READ"/>
+      <member name="write" value="10" c:identifier="GST_RESOURCE_ERROR_WRITE"/>
+      <member name="seek" value="11" c:identifier="GST_RESOURCE_ERROR_SEEK"/>
+      <member name="sync" value="12" c:identifier="GST_RESOURCE_ERROR_SYNC"/>
+      <member name="settings"
+              value="13"
+              c:identifier="GST_RESOURCE_ERROR_SETTINGS"/>
+      <member name="no_space_left"
+              value="14"
+              c:identifier="GST_RESOURCE_ERROR_NO_SPACE_LEFT"/>
+      <member name="num_errors"
+              value="15"
+              c:identifier="GST_RESOURCE_ERROR_NUM_ERRORS"/>
+    </enumeration>
+    <constant name="SECOND" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <enumeration name="SearchMode" version="0.10.23" c:type="GstSearchMode">
+      <doc xml:whitespace="preserve">The different search modes.</doc>
+      <member name="exact" value="0" c:identifier="GST_SEARCH_MODE_EXACT"/>
+      <member name="before" value="1" c:identifier="GST_SEARCH_MODE_BEFORE"/>
+      <member name="after" value="2" c:identifier="GST_SEARCH_MODE_AFTER"/>
+    </enumeration>
+    <bitfield name="SeekFlags" c:type="GstSeekFlags">
+      <doc xml:whitespace="preserve">Flags to be used with gst_element_seek() or gst_event_new_seek(). All flags
+can be used together.
+A non flushing seek might take some time to perform as the currently
+playing data in the pipeline will not be cleared.
+An accurate seek might be slower for formats that don't have any indexes
+or timestamp markers in the stream. Specifying this flag might require a
+complete scan of the file in those cases.
+no EOS will be emmited by the element that performed the seek, but a
+#GST_MESSAGE_SEGMENT_DONE message will be posted on the bus by the element.
+When this message is posted, it is possible to send a new seek event to
+continue playback. With this seek method it is possible to perform seemless
+looping or simple linear editing.
+When doing fast forward (rate &gt; 1.0) or fast reverse (rate &lt; -1.0) trickmode
+playback, the @GST_SEEK_FLAG_SKIP flag can be used to instruct decoders
+and demuxers to adjust the playback rate by skipping frames. This can improve
+performance and decrease CPU usage because not all frames need to be decoded.
+Also see part-seeking.txt in the GStreamer design documentation for more
+details on the meaning of these flags and the behaviour expected of
+elements that handle them.</doc>
+      <member name="none" value="0" c:identifier="GST_SEEK_FLAG_NONE"/>
+      <member name="flush" value="1" c:identifier="GST_SEEK_FLAG_FLUSH"/>
+      <member name="accurate" value="2" c:identifier="GST_SEEK_FLAG_ACCURATE"/>
+      <member name="key_unit" value="4" c:identifier="GST_SEEK_FLAG_KEY_UNIT"/>
+      <member name="segment" value="8" c:identifier="GST_SEEK_FLAG_SEGMENT"/>
+      <member name="skip" value="16" c:identifier="GST_SEEK_FLAG_SKIP"/>
+    </bitfield>
+    <enumeration name="SeekType" c:type="GstSeekType">
+      <doc xml:whitespace="preserve">The different types of seek events. When constructing a seek event with
+gst_event_new_seek(), a format, a seek method and optional flags are to
+be provided. The seek event is then inserted into the graph with
+gst_pad_send_event() or gst_element_send_event().</doc>
+      <member name="none" value="0" c:identifier="GST_SEEK_TYPE_NONE"/>
+      <member name="cur" value="1" c:identifier="GST_SEEK_TYPE_CUR"/>
+      <member name="set" value="2" c:identifier="GST_SEEK_TYPE_SET"/>
+      <member name="end" value="3" c:identifier="GST_SEEK_TYPE_END"/>
+    </enumeration>
+    <record name="Segment"
+            c:type="GstSegment"
+            glib:type-name="GstSegment"
+            glib:get-type="gst_segment_get_type"
+            c:symbol-prefix="segment">
+      <doc xml:whitespace="preserve">This helper structure holds the relevant values for tracking the region of
+interest in a media file, called a segment. 
+The structure can be used for two purposes:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;performing seeks (handling seek events)&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;tracking playback regions (handling newsegment events)&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+The segment is usually configured by the application with a seek event which 
+is propagated upstream and eventually handled by an element that performs the seek.
+The configured segment is then propagated back downstream with a newsegment event.
+This information is then used to clip media to the segment boundaries.
+A segment structure is initialized with gst_segment_init(), which takes a #GstFormat
+that will be used as the format of the segment values. The segment will be configured
+with a start value of 0 and a stop/duration of -1, which is undefined. The default
+rate and applied_rate is 1.0.
+If the segment is used for managing seeks, the segment duration should be set with
+gst_segment_set_duration(). The public duration field contains the duration of the
+segment. When using the segment for seeking, the start and time members should 
+normally be left to their default 0 value. The stop position is left to -1 unless
+explicitly configured to a different value after a seek event.
+The current position in the segment should be set with the gst_segment_set_last_stop().
+The public last_stop field contains the last set stop position in the segment.
+For elements that perform seeks, the current segment should be updated with the
+gst_segment_set_seek() and the values from the seek event. This method will update
+all the segment fields. The last_stop field will contain the new playback position.
+If the cur_type was different from GST_SEEK_TYPE_NONE, playback continues from
+the last_stop position, possibly with updated flags or rate.
+For elements that want to use #GstSegment to track the playback region, use
+gst_segment_set_newsegment() to update the segment fields with the information from
+the newsegment event. The gst_segment_clip() method can be used to check and clip
+the media data to the segment boundaries.
+For elements that want to synchronize to the pipeline clock, gst_segment_to_running_time()
+can be used to convert a timestamp to a value that can be used to synchronize
+to the clock. This function takes into account all accumulated segments as well as
+any rate or applied_rate conversions.
+For elements that need to perform operations on media data in stream_time, 
+gst_segment_to_stream_time() can be used to convert a timestamp and the segment
+info to stream time (which is always between 0 and the duration of the stream).
+Last reviewed on 2007-05-17 (0.10.13)</doc>
+      <field name="rate" writable="1">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <field name="abs_rate" writable="1">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <field name="format" writable="1">
+        <type name="Format" c:type="GstFormat"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="SeekFlags" c:type="GstSeekFlags"/>
+      </field>
+      <field name="start" writable="1">
+        <type name="gint64" c:type="gint64"/>
+      </field>
+      <field name="stop" writable="1">
+        <type name="gint64" c:type="gint64"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="gint64" c:type="gint64"/>
+      </field>
+      <field name="accum" writable="1">
+        <type name="gint64" c:type="gint64"/>
+      </field>
+      <field name="last_stop" writable="1">
+        <type name="gint64" c:type="gint64"/>
+      </field>
+      <field name="duration" writable="1">
+        <type name="gint64" c:type="gint64"/>
+      </field>
+      <field name="applied_rate" writable="1">
+        <type name="gdouble" c:type="gdouble"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="guint8" fixed-size="0">
+          <type name="guint8" c:type="guint8"/>
+        </array>
+      </field>
+      <constructor name="new" c:identifier="gst_segment_new">
+        <doc xml:whitespace="preserve">Allocate a new #GstSegment structure and initialize it using 
+gst_segment_init().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstSegment, free with gst_segment_free().</doc>
+          <type name="Segment" c:type="GstSegment*"/>
+        </return-value>
+      </constructor>
+      <method name="clip" c:identifier="gst_segment_clip">
+        <doc xml:whitespace="preserve">Clip the given @start and @stop values to the segment boundaries given
+in @segment. @start and @stop are compared and clipped to @segment 
+start and stop values.
+If the function returns FALSE, @start and @stop are known to fall
+outside of @segment and @clip_start and @clip_stop are not updated.
+When the function returns TRUE, @clip_start and @clip_stop will be
+updated. If @clip_start or @clip_stop are different from @start or @stop
+respectively, the region fell partially in the segment.
+Note that when @stop is -1, @clip_stop will be set to the end of the
+segment. Depending on the use case, this may or may not be what you want.
+completely in @segment, FALSE if the values are completely outside 
+of the segment.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the given @start and @stop times fall partially or</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the format of the segment.</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the start position in the segment</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the stop position in the segment</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="clip_start"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the clipped start position in the segment</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="clip_stop"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the clipped stop position in the segment</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy" c:identifier="gst_segment_copy" version="0.10.20">
+        <doc xml:whitespace="preserve">Create a copy of given @segment.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstSegment, free with gst_segment_free().</doc>
+          <type name="Segment" c:type="GstSegment*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="gst_segment_free">
+        <doc xml:whitespace="preserve">Free the allocated segment @segment.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="init" c:identifier="gst_segment_init">
+        <doc xml:whitespace="preserve">The start/last_stop positions are set to 0 and the stop/duration
+fields are set to -1 (unknown). The default rate of 1.0 and no
+flags are set.
+Initialize @segment to its default values.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the format of the segment.</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_duration" c:identifier="gst_segment_set_duration">
+        <doc xml:whitespace="preserve">Set the duration of the segment to @duration. This function is mainly
+used by elements that perform seeking and know the total duration of the
+segment. 
+This field should be set to allow seeking requests relative to the
+duration.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the format of the segment.</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="duration" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the duration of the segment info or -1 if unknown.</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_last_stop" c:identifier="gst_segment_set_last_stop">
+        <doc xml:whitespace="preserve">Set the last observed stop position in the segment to @position.
+This field should be set to allow seeking requests relative to the
+current playing position.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the format of the segment.</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_newsegment"
+              c:identifier="gst_segment_set_newsegment"
+              version="0.10.6">
+        <doc xml:whitespace="preserve">Update the segment structure with the field values of a new segment event and
+with a default applied_rate of 1.0.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="update" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flag indicating a new segment is started or updated</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="rate" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the rate of the segment.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the format of the segment.</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new start value</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new stop value</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="time" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new stream time</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_newsegment_full"
+              c:identifier="gst_segment_set_newsegment_full">
+        <doc xml:whitespace="preserve">Update the segment structure with the field values of a new segment event.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="update" transfer-ownership="none">
+            <doc xml:whitespace="preserve">flag indicating a new segment is started or updated</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="rate" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the rate of the segment.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="applied_rate" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the applied rate of the segment.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the format of the segment.</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new start value</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new stop value</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="time" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new stream time</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_running_time"
+              c:identifier="gst_segment_set_running_time"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Adjust the start/stop and accum values of @segment such that the next valid
+buffer will be one with @running_time.
+returned, @running_time is -1 or not in @segment.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the segment could be updated successfully. If %FALSE is</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the format of the segment.</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="running_time" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the running_time in the segment</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_seek" c:identifier="gst_segment_set_seek">
+        <doc xml:whitespace="preserve">Update the segment structure with the field values of a seek event (see
+gst_event_new_seek()).
+After calling this method, the segment field last_stop and time will
+contain the requested new position in the segment. The new requested
+position in the segment depends on @rate and @start_type and @stop_type. 
+For positive @rate, the new position in the segment is the new @segment
+start field when it was updated with a @start_type different from
+#GST_SEEK_TYPE_NONE. If no update was performed on @segment start position
+(#GST_SEEK_TYPE_NONE), @start is ignored and @segment last_stop is
+unmodified.
+For negative @rate, the new position in the segment is the new @segment
+stop field when it was updated with a @stop_type different from
+#GST_SEEK_TYPE_NONE. If no stop was previously configured in the segment, the
+duration of the segment will be used to update the stop position.
+If no update was performed on @segment stop position (#GST_SEEK_TYPE_NONE),
+The applied rate of the segment will be set to 1.0 by default.
+If the caller can apply a rate change, it should update @segment
+rate and applied_rate after calling this function.
+last_stop field. This field can be FALSE if, for example, only the @rate
+has been changed but not the playback position.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rate" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the rate of the segment.</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the format of the segment.</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the seek flags for the segment</doc>
+            <type name="SeekFlags" c:type="GstSeekFlags"/>
+          </parameter>
+          <parameter name="start_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the seek method</doc>
+            <type name="SeekType" c:type="GstSeekType"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the seek start value</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the seek method</doc>
+            <type name="SeekType" c:type="GstSeekType"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the seek stop value</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="update" transfer-ownership="none">
+            <doc xml:whitespace="preserve">boolean holding whether last_stop was updated.</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_position"
+              c:identifier="gst_segment_to_position"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Convert @running_time into a position in the segment so that
+gst_segment_to_running_time() with that position returns @running_time.
+-1 when @running_time is -1 or when it is not inside @segment.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the position in the segment for @running_time. This function returns</doc>
+          <type name="gint64" c:type="gint64"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the format of the segment.</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="running_time" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the running_time in the segment</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_running_time"
+              c:identifier="gst_segment_to_running_time">
+        <doc xml:whitespace="preserve">Translate @position to the total running time using the currently configured 
+and previously accumulated segments. Position is a value between @segment
+start and stop time.
+This function is typically used by elements that need to synchronize to the
+global clock in a pipeline. The runnning time is a constantly increasing value
+starting from 0. When gst_segment_init() is called, this value will reset to
+0.
+This function returns -1 if the position is outside of @segment start and stop.
+was given.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the position as the total running time or -1 when an invalid position</doc>
+          <type name="gint64" c:type="gint64"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the format of the segment.</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position in the segment</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_stream_time" c:identifier="gst_segment_to_stream_time">
+        <doc xml:whitespace="preserve">Translate @position to stream time using the currently configured 
+segment. The @position value must be between @segment start and
+stop value. 
+This function is typically used by elements that need to operate on
+the stream time of the buffers it receives, such as effect plugins.
+In those use cases, @position is typically the buffer timestamp or 
+clock time that one wants to convert to the stream time.
+The stream time is always between 0 and the total duration of the 
+media stream. 
+was given.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the position in stream_time or -1 when an invalid position</doc>
+          <type name="gint64" c:type="gint64"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the format of the segment.</doc>
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the position in the segment</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <enumeration name="State" c:type="GstState">
+      <doc xml:whitespace="preserve">The possible states an element can be in. States can be changed using
+gst_element_set_state() and checked using gst_element_get_state().</doc>
+      <member name="void_pending"
+              value="0"
+              c:identifier="GST_STATE_VOID_PENDING"/>
+      <member name="null" value="1" c:identifier="GST_STATE_NULL"/>
+      <member name="ready" value="2" c:identifier="GST_STATE_READY"/>
+      <member name="paused" value="3" c:identifier="GST_STATE_PAUSED"/>
+      <member name="playing" value="4" c:identifier="GST_STATE_PLAYING"/>
+    </enumeration>
+    <bitfield name="StateChange" c:type="GstStateChange">
+      <doc xml:whitespace="preserve">These are the different state changes an element goes through.
+%GST_STATE_NULL &amp;rArr; %GST_STATE_PLAYING is called an upwards state change
+and %GST_STATE_PLAYING &amp;rArr; %GST_STATE_NULL a downwards state change.</doc>
+      <member name="null_to_ready"
+              value="10"
+              c:identifier="GST_STATE_CHANGE_NULL_TO_READY"/>
+      <member name="ready_to_paused"
+              value="19"
+              c:identifier="GST_STATE_CHANGE_READY_TO_PAUSED"/>
+      <member name="paused_to_playing"
+              value="28"
+              c:identifier="GST_STATE_CHANGE_PAUSED_TO_PLAYING"/>
+      <member name="playing_to_paused"
+              value="35"
+              c:identifier="GST_STATE_CHANGE_PLAYING_TO_PAUSED"/>
+      <member name="paused_to_ready"
+              value="26"
+              c:identifier="GST_STATE_CHANGE_PAUSED_TO_READY"/>
+      <member name="ready_to_null"
+              value="17"
+              c:identifier="GST_STATE_CHANGE_READY_TO_NULL"/>
+    </bitfield>
+    <enumeration name="StateChangeReturn" c:type="GstStateChangeReturn">
+      <doc xml:whitespace="preserve">The possible return values from a state change function. Only</doc>
+      <member name="failure"
+              value="0"
+              c:identifier="GST_STATE_CHANGE_FAILURE"/>
+      <member name="success"
+              value="1"
+              c:identifier="GST_STATE_CHANGE_SUCCESS"/>
+      <member name="async" value="2" c:identifier="GST_STATE_CHANGE_ASYNC"/>
+      <member name="no_preroll"
+              value="3"
+              c:identifier="GST_STATE_CHANGE_NO_PREROLL"/>
+    </enumeration>
+    <record name="StaticCaps" c:type="GstStaticCaps">
+      <doc xml:whitespace="preserve">Datastructure to initialize #GstCaps from a string description usually
+used in conjunction with GST_STATIC_CAPS() and gst_static_caps_get() to
+instantiate a #GstCaps.</doc>
+      <field name="caps" writable="1">
+        <type name="Caps" c:type="GstCaps"/>
+      </field>
+      <field name="string" writable="1">
+        <type name="utf8" c:type="char*"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+      <method name="get" c:identifier="gst_static_caps_get">
+        <doc xml:whitespace="preserve">Converts a #GstStaticCaps to a #GstCaps.
+Since the core holds an additional ref to the returned caps,
+use gst_caps_make_writable() on the returned caps to modify it.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a pointer to the #GstCaps. Unref after usage.</doc>
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="StaticPadTemplate" c:type="GstStaticPadTemplate">
+      <doc xml:whitespace="preserve">Structure describing the #GstStaticPadTemplate.</doc>
+      <field name="name_template" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="direction" writable="1">
+        <type name="PadDirection" c:type="GstPadDirection"/>
+      </field>
+      <field name="presence" writable="1">
+        <type name="PadPresence" c:type="GstPadPresence"/>
+      </field>
+      <field name="static_caps" writable="1">
+        <type name="StaticCaps" c:type="GstStaticCaps"/>
+      </field>
+      <method name="get" c:identifier="gst_static_pad_template_get">
+        <doc xml:whitespace="preserve">Converts a #GstStaticPadTemplate into a #GstPadTemplate.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstPadTemplate.</doc>
+          <type name="PadTemplate" c:type="GstPadTemplate*"/>
+        </return-value>
+      </method>
+      <method name="get_caps" c:identifier="gst_static_pad_template_get_caps">
+        <doc xml:whitespace="preserve">Gets the capabilities of the static pad template.
+Unref after usage. Since the core holds an additional
+ref to the returned caps, use gst_caps_make_writable()
+on the returned caps to modify it.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #GstCaps of the static pad template.</doc>
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="StreamError"
+                 c:type="GstStreamError"
+                 glib:error-quark="gst_stream_error_quark">
+      <doc xml:whitespace="preserve">Stream errors are for anything related to the stream being processed:
+format errors, media type errors, ...
+They're typically used by decoders, demuxers, converters, ...</doc>
+      <member name="failed" value="1" c:identifier="GST_STREAM_ERROR_FAILED"/>
+      <member name="too_lazy"
+              value="2"
+              c:identifier="GST_STREAM_ERROR_TOO_LAZY"/>
+      <member name="not_implemented"
+              value="3"
+              c:identifier="GST_STREAM_ERROR_NOT_IMPLEMENTED"/>
+      <member name="type_not_found"
+              value="4"
+              c:identifier="GST_STREAM_ERROR_TYPE_NOT_FOUND"/>
+      <member name="wrong_type"
+              value="5"
+              c:identifier="GST_STREAM_ERROR_WRONG_TYPE"/>
+      <member name="codec_not_found"
+              value="6"
+              c:identifier="GST_STREAM_ERROR_CODEC_NOT_FOUND"/>
+      <member name="decode" value="7" c:identifier="GST_STREAM_ERROR_DECODE"/>
+      <member name="encode" value="8" c:identifier="GST_STREAM_ERROR_ENCODE"/>
+      <member name="demux" value="9" c:identifier="GST_STREAM_ERROR_DEMUX"/>
+      <member name="mux" value="10" c:identifier="GST_STREAM_ERROR_MUX"/>
+      <member name="format" value="11" c:identifier="GST_STREAM_ERROR_FORMAT"/>
+      <member name="decrypt"
+              value="12"
+              c:identifier="GST_STREAM_ERROR_DECRYPT"/>
+      <member name="decrypt_nokey"
+              value="13"
+              c:identifier="GST_STREAM_ERROR_DECRYPT_NOKEY"/>
+      <member name="num_errors"
+              value="14"
+              c:identifier="GST_STREAM_ERROR_NUM_ERRORS"/>
+    </enumeration>
+    <enumeration name="StreamStatusType"
+                 version="0.10.24"
+                 c:type="GstStreamStatusType">
+      <doc xml:whitespace="preserve">The type of a %GST_MESSAGE_STREAM_STATUS. The stream status messages inform the
+application of new streaming threads and their status.</doc>
+      <member name="create"
+              value="0"
+              c:identifier="GST_STREAM_STATUS_TYPE_CREATE"/>
+      <member name="enter"
+              value="1"
+              c:identifier="GST_STREAM_STATUS_TYPE_ENTER"/>
+      <member name="leave"
+              value="2"
+              c:identifier="GST_STREAM_STATUS_TYPE_LEAVE"/>
+      <member name="destroy"
+              value="3"
+              c:identifier="GST_STREAM_STATUS_TYPE_DESTROY"/>
+      <member name="start"
+              value="8"
+              c:identifier="GST_STREAM_STATUS_TYPE_START"/>
+      <member name="pause"
+              value="9"
+              c:identifier="GST_STREAM_STATUS_TYPE_PAUSE"/>
+      <member name="stop"
+              value="10"
+              c:identifier="GST_STREAM_STATUS_TYPE_STOP"/>
+    </enumeration>
+    <record name="Structure"
+            c:type="GstStructure"
+            glib:type-name="GstStructure"
+            glib:get-type="gst_structure_get_type"
+            c:symbol-prefix="structure">
+      <doc xml:whitespace="preserve">A #GstStructure is a collection of key/value pairs. The keys are expressed
+as GQuarks and the values can be of any GType.
+In addition to the key/value pairs, a #GstStructure also has a name. The name
+starts with a letter and can be folled by letters, numbers and any of "/-_.:".
+#GstStructure is used by various GStreamer subsystems to store information
+in a flexible and extensible way. A #GstStructure does not have a refcount
+because it usually is part of a higher level object such as #GstCaps. It
+provides a means to enforce mutability using the refcount of the parent
+with the gst_structure_set_parent_refcount() method.
+A #GstStructure can be created with gst_structure_empty_new() or
+gst_structure_new(), which both take a name and an optional set of
+key/value pairs along with the types of the values.
+Field values can be changed with gst_structure_set_value() or
+gst_structure_set().
+Field values can be retrieved with gst_structure_get_value() or the more
+convenient gst_structure_get_*() functions.
+Fields can be removed with gst_structure_remove_field() or
+gst_structure_remove_fields().
+Strings in structures must be ASCII or UTF-8 encoded. Other encodings are
+not allowed. Strings must not be empty either, but may be NULL.
+Last reviewed on 2009-06-08 (0.10.23)</doc>
+      <field name="type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="name" readable="0" private="1">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </field>
+      <field name="parent_refcount" readable="0" private="1">
+        <type name="gint" c:type="gint*"/>
+      </field>
+      <field name="fields" readable="0" private="1">
+        <array name="GLib.Array" c:type="GArray*">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <constructor name="empty_new" c:identifier="gst_structure_empty_new">
+        <doc xml:whitespace="preserve">Creates a new, empty #GstStructure with the given @name.
+See gst_structure_set_name() for constraints on the @name parameter.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new, empty #GstStructure</doc>
+          <type name="Structure" c:type="GstStructure*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of new structure</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="id_empty_new"
+                   c:identifier="gst_structure_id_empty_new">
+        <doc xml:whitespace="preserve">Creates a new, empty #GstStructure with the given name as a GQuark.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new, empty #GstStructure</doc>
+          <type name="Structure" c:type="GstStructure*"/>
+        </return-value>
+        <parameters>
+          <parameter name="quark" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of new structure</doc>
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="id_new"
+                   c:identifier="gst_structure_id_new"
+                   version="0.10.24"
+                   introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new #GstStructure with the given name as a GQuark, followed by
+fieldname quark, GType, argument(s) "triplets" in the same format as
+gst_structure_id_set(). Basically a convenience wrapper around
+gst_structure_id_empty_new() and gst_structure_id_set().
+The last variable argument must be NULL (or 0).</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstStructure</doc>
+          <type name="Structure" c:type="GstStructure*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name_quark" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of new structure</doc>
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter name="field_quark" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the GQuark for the name of the field to set</doc>
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new"
+                   c:identifier="gst_structure_new"
+                   introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new #GstStructure with the given name.  Parses the
+list of variable arguments and sets fields to the values listed.
+Variable arguments should be passed as field name, field type,
+and value.  Last variable argument should be NULL.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstStructure</doc>
+          <type name="Structure" c:type="GstStructure*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of new structure</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="firstfield" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of first field to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_valist"
+                   c:identifier="gst_structure_new_valist"
+                   introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new #GstStructure with the given @name.  Structure fields
+are set according to the varargs in a manner similar to
+gst_structure_new().
+See gst_structure_set_name() for constraints on the @name parameter.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstStructure</doc>
+          <type name="Structure" c:type="GstStructure*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of new structure</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="firstfield" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of first field to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="varargs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">variable argument list</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy" c:identifier="gst_structure_copy">
+        <doc xml:whitespace="preserve">Duplicates a #GstStructure and all its fields and values.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a new #GstStructure.</doc>
+          <type name="Structure" c:type="GstStructure*"/>
+        </return-value>
+      </method>
+      <method name="fixate_field_boolean"
+              c:identifier="gst_structure_fixate_field_boolean">
+        <doc xml:whitespace="preserve">Fixates a #GstStructure by changing the given @field_name field to the given</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the structure could be fixated</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="field_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a field in @structure</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="target" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the target value of the fixation</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fixate_field_nearest_double"
+              c:identifier="gst_structure_fixate_field_nearest_double">
+        <doc xml:whitespace="preserve">Fixates a #GstStructure by changing the given field to the nearest
+double to @target that is a subset of the existing field.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the structure could be fixated</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="field_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a field in @structure</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="target" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the target value of the fixation</doc>
+            <type name="gdouble" c:type="double"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fixate_field_nearest_fraction"
+              c:identifier="gst_structure_fixate_field_nearest_fraction">
+        <doc xml:whitespace="preserve">Fixates a #GstStructure by changing the given field to the nearest
+fraction to @target_numerator/@target_denominator that is a subset
+of the existing field.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the structure could be fixated</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="field_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a field in @structure</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="target_numerator" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The numerator of the target value of the fixation</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="target_denominator" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The denominator of the target value of the fixation</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fixate_field_nearest_int"
+              c:identifier="gst_structure_fixate_field_nearest_int">
+        <doc xml:whitespace="preserve">Fixates a #GstStructure by changing the given field to the nearest
+integer to @target that is a subset of the existing field.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the structure could be fixated</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="field_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a field in @structure</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="target" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the target value of the fixation</doc>
+            <type name="gint" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fixate_field_string"
+              c:identifier="gst_structure_fixate_field_string"
+              version="0.10.30">
+        <doc xml:whitespace="preserve">Fixates a #GstStructure by changing the given @field_name field to the given</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the structure could be fixated</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="field_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a field in @structure</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="target" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the target value of the fixation</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="foreach" c:identifier="gst_structure_foreach">
+        <doc xml:whitespace="preserve">Calls the provided function once for each field in the #GstStructure. The
+function must not modify the fields. Also see gst_structure_map_in_place().
+FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the supplied function returns TRUE For each of the fields,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">a function to call for each field</doc>
+            <type name="StructureForeachFunc"
+                  c:type="GstStructureForeachFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">private data</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free" c:identifier="gst_structure_free">
+        <doc xml:whitespace="preserve">Frees a #GstStructure and all its fields and values. The structure must not
+have a parent when this function is called.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get"
+              c:identifier="gst_structure_get"
+              version="0.10.24"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Parses the variable arguments and reads fields from @structure accordingly.
+Variable arguments should be in the form field name, field type
+(as a GType), pointer(s) to a variable(s) to hold the return value(s).
+The last variable argument should be NULL.
+For refcounted (mini)objects you will acquire your own reference which
+you must release with a suitable _unref() when no longer needed. For
+strings and boxed types you will acquire a copy which you will need to
+release with either g_free() or the suiteable function for the boxed type.
+because the field requested did not exist, or was of a type other
+than the type specified), otherwise TRUE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">FALSE if there was a problem reading any of the fields (e.g.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_fieldname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the first field to read</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_boolean" c:identifier="gst_structure_get_boolean">
+        <doc xml:whitespace="preserve">Sets the boolean pointed to by @value corresponding to the value of the
+given field.  Caller is responsible for making sure the field exists
+and has the correct type.
+with @fieldname or the existing field did not contain a boolean, this
+function returns FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the value could be set correctly. If there was no field</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a field</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">a pointer to a #gboolean to set</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_clock_time"
+              c:identifier="gst_structure_get_clock_time">
+        <doc xml:whitespace="preserve">Sets the clock time pointed to by @value corresponding to the clock time
+of the given field.  Caller is responsible for making sure the field exists
+and has the correct type.
+with @fieldname or the existing field did not contain a #GstClockTime, this
+function returns FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the value could be set correctly. If there was no field</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a field</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">a pointer to a #GstClockTime to set</doc>
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_date" c:identifier="gst_structure_get_date">
+        <doc xml:whitespace="preserve">Sets the date pointed to by @value corresponding to the date of the
+given field.  Caller is responsible for making sure the field exists
+and has the correct type.
+On success @value will point to a newly-allocated copy of the date which
+inconsistent with e.g. gst_structure_get_string() which doesn't return a
+copy of the string).
+with @fieldname or the existing field did not contain a data, this function
+returns FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the value could be set correctly. If there was no field</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a field</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">a pointer to a #GDate to set</doc>
+            <type name="GLib.Date" c:type="GDate**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_date_time"
+              c:identifier="gst_structure_get_date_time"
+              version="0.10.31">
+        <doc xml:whitespace="preserve">Sets the datetime pointed to by @value corresponding to the datetime of the
+given field. Caller is responsible for making sure the field exists
+and has the correct type.
+On success @value will point to a reference of the datetime which
+should be unreffed with gst_date_time_unref() when no longer needed
+(note: this is inconsistent with e.g. gst_structure_get_string()
+which doesn't return a copy of the string).
+with @fieldname or the existing field did not contain a data, this function
+returns FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the value could be set correctly. If there was no field</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a field</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">a pointer to a #GstDateTime to set</doc>
+            <type name="DateTime" c:type="GstDateTime**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_double" c:identifier="gst_structure_get_double">
+        <doc xml:whitespace="preserve">Sets the double pointed to by @value corresponding to the value of the
+given field.  Caller is responsible for making sure the field exists
+and has the correct type.
+with @fieldname or the existing field did not contain a double, this
+function returns FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the value could be set correctly. If there was no field</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a field</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">a pointer to a gdouble to set</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_enum" c:identifier="gst_structure_get_enum">
+        <doc xml:whitespace="preserve">Sets the int pointed to by @value corresponding to the value of the
+given field.  Caller is responsible for making sure the field exists,
+has the correct type and that the enumtype is correct.
+with @fieldname or the existing field did not contain an enum of the given
+type, this function returns FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the value could be set correctly. If there was no field</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a field</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="enumtype" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the enum type of a field</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">a pointer to an int to set</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_field_type"
+              c:identifier="gst_structure_get_field_type">
+        <doc xml:whitespace="preserve">Finds the field with the given name, and returns the type of the
+value it contains.  If the field is not found, G_TYPE_INVALID is
+returned.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GValue of the field</doc>
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the field</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_fourcc" c:identifier="gst_structure_get_fourcc">
+        <doc xml:whitespace="preserve">Sets the Fourcc pointed to by @value corresponding to the value of the
+given field.  Caller is responsible for making sure the field exists
+and has the correct type.
+with @fieldname or the existing field did not contain a fourcc, this function
+returns FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the value could be set correctly. If there was no field</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a field</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">a pointer to a 32bit unsigned int to set</doc>
+            <type name="guint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_fraction" c:identifier="gst_structure_get_fraction">
+        <doc xml:whitespace="preserve">Sets the integers pointed to by @value_numerator and @value_denominator
+corresponding to the value of the given field.  Caller is responsible
+for making sure the field exists and has the correct type.
+with @fieldname or the existing field did not contain a GstFraction, this
+function returns FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the values could be set correctly. If there was no field</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a field</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value_numerator"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">a pointer to an int to set</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+          <parameter name="value_denominator"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">a pointer to an int to set</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int" c:identifier="gst_structure_get_int">
+        <doc xml:whitespace="preserve">Sets the int pointed to by @value corresponding to the value of the
+given field.  Caller is responsible for making sure the field exists
+and has the correct type.
+with @fieldname or the existing field did not contain an int, this function
+returns %FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value could be set correctly. If there was no field</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a field</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">a pointer to an int to set</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_name" c:identifier="gst_structure_get_name">
+        <doc xml:whitespace="preserve">Get the name of @structure as a string.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the structure.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_name_id" c:identifier="gst_structure_get_name_id">
+        <doc xml:whitespace="preserve">Get the name of @structure as a GQuark.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the quark representing the name of the structure.</doc>
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </return-value>
+      </method>
+      <method name="get_string" c:identifier="gst_structure_get_string">
+        <doc xml:whitespace="preserve">Finds the field corresponding to @fieldname, and returns the string
+contained in the field's value.  Caller is responsible for making
+sure the field exists and has the correct type.
+The string should not be modified, and remains valid until the next
+call to a gst_structure_*() function with the given structure.
+or did not contain a string.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to the string or NULL when the field did not exist</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a field</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint"
+              c:identifier="gst_structure_get_uint"
+              version="0.10.15">
+        <doc xml:whitespace="preserve">Sets the uint pointed to by @value corresponding to the value of the
+given field.  Caller is responsible for making sure the field exists
+and has the correct type.
+with @fieldname or the existing field did not contain a uint, this function
+returns %FALSE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value could be set correctly. If there was no field</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a field</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">a pointer to a uint to set</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_valist"
+              c:identifier="gst_structure_get_valist"
+              version="0.10.24"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Parses the variable arguments and reads fields from @structure accordingly.
+valist-variant of gst_structure_get(). Look at the documentation of
+gst_structure_get() for more details.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, or FALSE if there was a problem reading any of the fields</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_fieldname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the first field to read</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="args" transfer-ownership="none">
+            <doc xml:whitespace="preserve">variable arguments</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value" c:identifier="gst_structure_get_value">
+        <doc xml:whitespace="preserve">Get the value of the field with name @fieldname.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GValue corresponding to the field with the given name.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the field to get</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_field" c:identifier="gst_structure_has_field">
+        <doc xml:whitespace="preserve">Check if @structure contains a field named @fieldname.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the structure contains a field with the given name</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a field</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_field_typed"
+              c:identifier="gst_structure_has_field_typed">
+        <doc xml:whitespace="preserve">Check if @structure contains a field named @fieldname and with GType @type.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the structure contains a field with the given name and type</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of a field</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type of a value</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_name" c:identifier="gst_structure_has_name">
+        <doc xml:whitespace="preserve">Checks if the structure has the given name</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if @name matches the name of the structure.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">structure name to check for</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="id_get"
+              c:identifier="gst_structure_id_get"
+              version="0.10.24"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Parses the variable arguments and reads fields from @structure accordingly.
+Variable arguments should be in the form field id quark, field type
+(as a GType), pointer(s) to a variable(s) to hold the return value(s).
+The last variable argument should be NULL (technically it should be a
+0 quark, but we require NULL so compilers that support it can check for
+the NULL terminator and warn if it's not there).
+This function is just like gst_structure_get() only that it is slightly
+more efficient since it saves the string-to-quark lookup in the global
+quark hashtable.
+For refcounted (mini)objects you will acquire your own reference which
+you must release with a suitable _unref() when no longer needed. For
+strings and boxed types you will acquire a copy which you will need to
+release with either g_free() or the suiteable function for the boxed type.
+because the field requested did not exist, or was of a type other
+than the type specified), otherwise TRUE.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">FALSE if there was a problem reading any of the fields (e.g.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_field_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the quark of the first field to read</doc>
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="id_get_valist"
+              c:identifier="gst_structure_id_get_valist"
+              version="0.10.24"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Parses the variable arguments and reads fields from @structure accordingly.
+valist-variant of gst_structure_id_get(). Look at the documentation of
+gst_structure_id_get() for more details.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, or FALSE if there was a problem reading any of the fields</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_field_id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the quark of the first field to read</doc>
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter name="args" transfer-ownership="none">
+            <doc xml:whitespace="preserve">variable arguments</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="id_get_value" c:identifier="gst_structure_id_get_value">
+        <doc xml:whitespace="preserve">Get the value of the field with GQuark @field.
+identifier.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GValue corresponding to the field with the given name</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="field" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GQuark of the field to get</doc>
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="id_has_field"
+              c:identifier="gst_structure_id_has_field"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Check if @structure contains a field named @field.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the structure contains a field with the given name</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="field" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#GQuark of the field name</doc>
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="id_has_field_typed"
+              c:identifier="gst_structure_id_has_field_typed"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Check if @structure contains a field named @field and with GType @type.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the structure contains a field with the given name and type</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="field" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#GQuark of the field name</doc>
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the type of a value</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="id_set"
+              c:identifier="gst_structure_id_set"
+              version="0.10.10"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Identical to gst_structure_set, except that field names are
+passed using the GQuark for the field name. This allows more efficient
+setting of the structure if the caller already knows the associated
+quark values.
+The last variable argument must be NULL.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the GQuark for the name of the field to set</doc>
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="id_set_valist"
+              c:identifier="gst_structure_id_set_valist"
+              version="0.10.10"
+              introspectable="0">
+        <doc xml:whitespace="preserve">va_list form of gst_structure_id_set().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the field to set</doc>
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter name="varargs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">variable arguments</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="id_set_value" c:identifier="gst_structure_id_set_value">
+        <doc xml:whitespace="preserve">Sets the field with the given GQuark @field to @value.  If the field
+does not exist, it is created.  If the field exists, the previous
+value is replaced and freed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="field" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GQuark representing a field</doc>
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new value of the field</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="id_take_value"
+              c:identifier="gst_structure_id_take_value"
+              version="0.10.31">
+        <doc xml:whitespace="preserve">Sets the field with the given GQuark @field to @value.  If the field
+does not exist, it is created.  If the field exists, the previous
+value is replaced and freed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="field" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GQuark representing a field</doc>
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="full">
+            <doc xml:whitespace="preserve">the new value of the field</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="map_in_place" c:identifier="gst_structure_map_in_place">
+        <doc xml:whitespace="preserve">Calls the provided function once for each field in the #GstStructure. In
+contrast to gst_structure_foreach(), the function may modify but not delete the
+fields. The structure must be mutable.
+FALSE otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the supplied function returns TRUE For each of the fields,</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">a function to call for each field</doc>
+            <type name="StructureMapFunc" c:type="GstStructureMapFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">private data</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="n_fields" c:identifier="gst_structure_n_fields">
+        <doc xml:whitespace="preserve">Get the number of fields in the structure.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of fields in the structure</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="nth_field_name"
+              c:identifier="gst_structure_nth_field_name">
+        <doc xml:whitespace="preserve">Get the name of the given field number, counting from 0 onwards.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the given field number</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the index to get the name of</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_all_fields"
+              c:identifier="gst_structure_remove_all_fields">
+        <doc xml:whitespace="preserve">Removes all fields in a GstStructure.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="remove_field" c:identifier="gst_structure_remove_field">
+        <doc xml:whitespace="preserve">Removes the field with the given name.  If the field with the given
+name does not exist, the structure is unchanged.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the field to remove</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_fields"
+              c:identifier="gst_structure_remove_fields"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Removes the fields with the given names. If a field does not exist, the
+argument is ignored.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the field to remove</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_fields_valist"
+              c:identifier="gst_structure_remove_fields_valist"
+              introspectable="0">
+        <doc xml:whitespace="preserve">va_list form of gst_structure_remove_fields().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the field to remove</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="varargs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">NULL-terminated list of more fieldnames to remove</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set" c:identifier="gst_structure_set" introspectable="0">
+        <doc xml:whitespace="preserve">Parses the variable arguments and sets fields accordingly.
+Variable arguments should be in the form field name, field type
+(as a GType), value(s).  The last variable argument should be NULL.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the field to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_name" c:identifier="gst_structure_set_name">
+        <doc xml:whitespace="preserve">Sets the name of the structure to the given @name.  The string
+provided is copied before being used. It must not be empty, start with a
+letter and can be followed by letters, numbers and any of "/-_.:".</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new name of the structure</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_parent_refcount"
+              c:identifier="gst_structure_set_parent_refcount">
+        <doc xml:whitespace="preserve">Sets the parent_refcount field of #GstStructure. This field is used to
+determine whether a structure is mutable or not. This function should only be
+called by code implementing parent objects of #GstStructure, as described in
+the MT Refcounting section of the design documents.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="refcount" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to the parent's refcount</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_valist"
+              c:identifier="gst_structure_set_valist"
+              introspectable="0">
+        <doc xml:whitespace="preserve">va_list form of gst_structure_set().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the field to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="varargs" transfer-ownership="none">
+            <doc xml:whitespace="preserve">variable arguments</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_value" c:identifier="gst_structure_set_value">
+        <doc xml:whitespace="preserve">Sets the field with the given name @field to @value.  If the field
+does not exist, it is created.  If the field exists, the previous
+value is replaced and freed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the field to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new value of the field</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="take_value"
+              c:identifier="gst_structure_take_value"
+              version="0.10.31">
+        <doc xml:whitespace="preserve">Sets the field with the given name @field to @value.  If the field
+does not exist, it is created.  If the field exists, the previous
+value is replaced and freed. The function will take ownership of @value.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the field to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="full">
+            <doc xml:whitespace="preserve">the new value of the field</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_string" c:identifier="gst_structure_to_string">
+        <doc xml:whitespace="preserve">Converts @structure to a human-readable string representation.
+For debugging purposes its easier to do something like this:
+|[
+GST_LOG ("structure is %" GST_PTR_FORMAT, structure);
+]|
+This prints the structure in human readble form.
+g_free() after usage.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">(transfer full)L a pointer to string allocated by g_malloc().</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="StructureChangeType"
+                 version="0.10.22"
+                 c:type="GstStructureChangeType">
+      <doc xml:whitespace="preserve">The type of a %GST_MESSAGE_STRUCTURE_CHANGE.</doc>
+      <member name="link"
+              value="0"
+              c:identifier="GST_STRUCTURE_CHANGE_TYPE_PAD_LINK"/>
+      <member name="unlink"
+              value="1"
+              c:identifier="GST_STRUCTURE_CHANGE_TYPE_PAD_UNLINK"/>
+    </enumeration>
+    <callback name="StructureForeachFunc" c:type="GstStructureForeachFunc">
+      <doc xml:whitespace="preserve">A function that will be called in gst_structure_foreach(). The function may
+not modify @value.
+the foreach operation should stop with FALSE.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if the foreach operation should continue, FALSE if</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="field_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GQuark of the field name</doc>
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GValue of the field</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <doc xml:whitespace="preserve">user data</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="StructureMapFunc" c:type="GstStructureMapFunc">
+      <doc xml:whitespace="preserve">A function that will be called in gst_structure_map_in_place(). The function
+may modify @value.
+the map operation should stop with FALSE.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if the map operation should continue, FALSE if</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="field_id" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GQuark of the field name</doc>
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GValue of the field</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <doc xml:whitespace="preserve">user data</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="SystemClock"
+           c:symbol-prefix="system_clock"
+           c:type="GstSystemClock"
+           parent="Clock"
+           glib:type-name="GstSystemClock"
+           glib:get-type="gst_system_clock_get_type"
+           glib:type-struct="SystemClockClass">
+      <doc xml:whitespace="preserve">The GStreamer core provides a GstSystemClock based on the system time.
+Asynchronous callbacks are scheduled from an internal thread.
+Clock implementors are encouraged to subclass this systemclock as it
+implements the async notification.
+Subclasses can however override all of the important methods for sync and
+async notifications to implement their own callback methods or blocking
+wait operations.
+Last reviewed on 2006-03-08 (0.10.4)</doc>
+      <function name="obtain" c:identifier="gst_system_clock_obtain">
+        <doc xml:whitespace="preserve">Get a handle to the default system clock. The refcount of the
+clock will be increased so you need to unref the clock after
+usage.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the default clock.</doc>
+          <type name="Clock" c:type="GstClock*"/>
+        </return-value>
+      </function>
+      <property name="clock-type"
+                introspectable="0"
+                writable="1"
+                transfer-ownership="none">
+        <type/>
+      </property>
+      <field name="clock">
+        <type name="Clock" c:type="GstClock"/>
+      </field>
+      <field name="thread" readable="0" private="1">
+        <type name="GLib.Thread" c:type="GThread*"/>
+      </field>
+      <field name="stopping" readable="0" private="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="SystemClockPrivate" c:type="GstSystemClockPrivate*"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </class>
+    <record name="SystemClockClass"
+            c:type="GstSystemClockClass"
+            glib:is-gtype-struct-for="SystemClock">
+      <field name="parent_class">
+        <type name="ClockClass" c:type="GstClockClass"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <record name="SystemClockPrivate"
+            c:type="GstSystemClockPrivate"
+            disguised="1">
+    </record>
+    <constant name="TAG_ALBUM" value="album">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_ALBUM_ARTIST" value="album-artist">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_ALBUM_ARTIST_SORTNAME" value="album-artist-sortname">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_ALBUM_GAIN" value="replaygain-album-gain">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_ALBUM_PEAK" value="replaygain-album-peak">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_ALBUM_SORTNAME" value="album-sortname">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_ALBUM_VOLUME_COUNT" value="album-disc-count">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_ALBUM_VOLUME_NUMBER" value="album-disc-number">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_APPLICATION_DATA" value="application-data">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_APPLICATION_NAME" value="application-name">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_ARTIST" value="artist">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_ARTIST_SORTNAME" value="musicbrainz-sortname">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_ATTACHMENT" value="attachment">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_AUDIO_CODEC" value="audio-codec">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_BEATS_PER_MINUTE" value="beats-per-minute">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_BITRATE" value="bitrate">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_CODEC" value="codec">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_COMMENT" value="comment">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_COMPOSER" value="composer">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_COMPOSER_SORTNAME" value="composer-sortname">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_CONTACT" value="contact">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_CONTAINER_FORMAT" value="container-format">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_COPYRIGHT" value="copyright">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_COPYRIGHT_URI" value="copyright-uri">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_DATE" value="date">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_DATE_TIME" value="datetime">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_DESCRIPTION" value="description">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_DEVICE_MANUFACTURER" value="device-manufacturer">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_DEVICE_MODEL" value="device-model">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_DURATION" value="duration">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_ENCODED_BY" value="encoded-by">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_ENCODER" value="encoder">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_ENCODER_VERSION" value="encoder-version">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_EXTENDED_COMMENT" value="extended-comment">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_GENRE" value="genre">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_GEO_LOCATION_CAPTURE_DIRECTION"
+              value="geo-location-capture-direction">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_GEO_LOCATION_CITY" value="geo-location-city">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_GEO_LOCATION_COUNTRY" value="geo-location-country">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_GEO_LOCATION_ELEVATION" value="geo-location-elevation">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_GEO_LOCATION_HORIZONTAL_ERROR"
+              value="geo-location-horizontal-error">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_GEO_LOCATION_LATITUDE" value="geo-location-latitude">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_GEO_LOCATION_LONGITUDE" value="geo-location-longitude">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_GEO_LOCATION_MOVEMENT_DIRECTION"
+              value="geo-location-movement-direction">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_GEO_LOCATION_MOVEMENT_SPEED"
+              value="geo-location-movement-speed">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_GEO_LOCATION_NAME" value="geo-location-name">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_GEO_LOCATION_SUBLOCATION"
+              value="geo-location-sublocation">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_GROUPING" value="grouping">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_HOMEPAGE" value="homepage">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_IMAGE" value="image">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_IMAGE_ORIENTATION" value="image-orientation">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_ISRC" value="isrc">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_KEYWORDS" value="keywords">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_LANGUAGE_CODE" value="language-code">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_LICENSE" value="license">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_LICENSE_URI" value="license-uri">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_LOCATION" value="location">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_LYRICS" value="lyrics">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_MAXIMUM_BITRATE" value="maximum-bitrate">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_MINIMUM_BITRATE" value="minimum-bitrate">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_NOMINAL_BITRATE" value="nominal-bitrate">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_ORGANIZATION" value="organization">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_PERFORMER" value="performer">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_PREVIEW_IMAGE" value="preview-image">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_REFERENCE_LEVEL" value="replaygain-reference-level">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_SERIAL" value="serial">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_SHOW_EPISODE_NUMBER" value="show-episode-number">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_SHOW_NAME" value="show-name">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_SHOW_SEASON_NUMBER" value="show-season-number">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_SHOW_SORTNAME" value="show-sortname">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_SUBTITLE_CODEC" value="subtitle-codec">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_TITLE" value="title">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_TITLE_SORTNAME" value="title-sortname">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_TRACK_COUNT" value="track-count">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_TRACK_GAIN" value="replaygain-track-gain">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_TRACK_NUMBER" value="track-number">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_TRACK_PEAK" value="replaygain-track-peak">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_USER_RATING" value="user-rating">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_VERSION" value="version">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TAG_VIDEO_CODEC" value="video-codec">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="TIME_FORMAT" value="u:%02u:%02u.%09u">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <enumeration name="TagFlag" c:type="GstTagFlag">
+      <doc xml:whitespace="preserve">Extra tag flags used when registering tags.</doc>
+      <member name="undefined"
+              value="0"
+              c:identifier="GST_TAG_FLAG_UNDEFINED"/>
+      <member name="meta" value="1" c:identifier="GST_TAG_FLAG_META"/>
+      <member name="encoded" value="2" c:identifier="GST_TAG_FLAG_ENCODED"/>
+      <member name="decoded" value="3" c:identifier="GST_TAG_FLAG_DECODED"/>
+      <member name="count" value="4" c:identifier="GST_TAG_FLAG_COUNT"/>
+    </enumeration>
+    <callback name="TagForeachFunc" c:type="GstTagForeachFunc">
+      <doc xml:whitespace="preserve">A function that will be called in gst_tag_list_foreach(). The function may
+not modify the tag list.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstTagList</doc>
+          <type name="TagList" c:type="GstTagList*"/>
+        </parameter>
+        <parameter name="tag" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a name of a tag in @list</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <doc xml:whitespace="preserve">user data</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="TagList"
+            c:type="GstTagList"
+            glib:type-name="GstTagList"
+            glib:get-type="gst_tag_list_get_type"
+            c:symbol-prefix="tag_list">
+      <doc xml:whitespace="preserve">List of tags and values used to describe media metadata.
+Strings must be in ASCII or UTF-8 encoding. No other encodings are allowed.
+Last reviewed on 2009-06-09 (0.10.23)</doc>
+      <constructor name="new" c:identifier="gst_tag_list_new">
+        <doc xml:whitespace="preserve">Creates a new empty GstTagList.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">An empty tag list</doc>
+          <type name="TagList" c:type="GstTagList*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_full"
+                   c:identifier="gst_tag_list_new_full"
+                   version="0.10.24"
+                   introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new taglist and appends the values for the given tags. It expects
+tag-value pairs like gst_tag_list_add(), and a NULL terminator after the
+last pair. The type of the values is implicit and is documented in the API
+reference, but can also be queried at runtime with gst_tag_get_type(). It
+is an error to pass a value of a type not matching the tag type into this
+function. The tag list will make copies of any arguments passed
+(e.g. strings, buffers).
+when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstTagList. Free with gst_tag_list_free()</doc>
+          <type name="TagList" c:type="GstTagList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_full_valist"
+                   c:identifier="gst_tag_list_new_full_valist"
+                   version="0.10.24"
+                   introspectable="0">
+        <doc xml:whitespace="preserve">Just like gst_tag_list_new_full(), only that it takes a va_list argument.
+Useful mostly for language bindings.
+when no longer needed.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstTagList. Free with gst_tag_list_free()</doc>
+          <type name="TagList" c:type="GstTagList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="var_args" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag / value pairs to set</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="add" c:identifier="gst_tag_list_add" introspectable="0">
+        <doc xml:whitespace="preserve">Sets the values for the given tags using the specified mode.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the mode to use</doc>
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_valist"
+              c:identifier="gst_tag_list_add_valist"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets the values for the given tags using the specified mode.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the mode to use</doc>
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="var_args" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag / value pairs to set</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_valist_values"
+              c:identifier="gst_tag_list_add_valist_values"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets the GValues for the given tags using the specified mode.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the mode to use</doc>
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="var_args" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag / GValue pairs to set</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_value"
+              c:identifier="gst_tag_list_add_value"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Sets the GValue for a given tag using the specified mode.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the mode to use</doc>
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">GValue for this tag</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_values"
+              c:identifier="gst_tag_list_add_values"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Sets the GValues for the given tags using the specified mode.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the mode to use</doc>
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy" c:identifier="gst_tag_list_copy">
+        <doc xml:whitespace="preserve">Copies a given #GstTagList.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">copy of the given list</doc>
+          <type name="TagList" c:type="GstTagList*"/>
+        </return-value>
+      </method>
+      <method name="foreach" c:identifier="gst_tag_list_foreach">
+        <doc xml:whitespace="preserve">Calls the given function for each tag inside the tag list. Note that if there
+is no tag, the function won't be called at all.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <doc xml:whitespace="preserve">function to be called for each tag</doc>
+            <type name="TagForeachFunc" c:type="GstTagForeachFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user specified data</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free" c:identifier="gst_tag_list_free">
+        <doc xml:whitespace="preserve">Frees the given list and all associated values.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_boolean" c:identifier="gst_tag_list_get_boolean">
+        <doc xml:whitespace="preserve">Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if a value was copied, FALSE if the tag didn't exist in the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to read out</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location for the result</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_boolean_index"
+              c:identifier="gst_tag_list_get_boolean_index">
+        <doc xml:whitespace="preserve">Gets the value that is at the given index for the given tag in the given
+list.
+given list.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if a value was copied, FALSE if the tag didn't exist in the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to read out</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of entry to read out</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location for the result</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_buffer"
+              c:identifier="gst_tag_list_get_buffer"
+              version="0.10.23">
+        <doc xml:whitespace="preserve">Copies the first buffer for the given tag in the taglist into the variable
+pointed to by @value. Free the buffer with gst_buffer_unref() when it is
+no longer needed.
+given list or if it was #NULL.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if a buffer was copied, FALSE if the tag didn't exist in the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to read out</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">address of a GstBuffer pointer variable to store the result into</doc>
+            <type name="Buffer" c:type="GstBuffer**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_buffer_index"
+              c:identifier="gst_tag_list_get_buffer_index"
+              version="0.10.23">
+        <doc xml:whitespace="preserve">Gets the buffer that is at the given index for the given tag in the given
+list and copies it into the variable pointed to by @value. Free the buffer
+with gst_buffer_unref() when it is no longer needed.
+given list or if it was #NULL.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if a buffer was copied, FALSE if the tag didn't exist in the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to read out</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of entry to read out</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">address of a GstBuffer pointer variable to store the result into</doc>
+            <type name="Buffer" c:type="GstBuffer**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_char" c:identifier="gst_tag_list_get_char">
+        <doc xml:whitespace="preserve">Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if a value was copied, FALSE if the tag didn't exist in the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to read out</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location for the result</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_char_index" c:identifier="gst_tag_list_get_char_index">
+        <doc xml:whitespace="preserve">Gets the value that is at the given index for the given tag in the given
+list.
+given list.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if a value was copied, FALSE if the tag didn't exist in the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to read out</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of entry to read out</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location for the result</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_date" c:identifier="gst_tag_list_get_date">
+        <doc xml:whitespace="preserve">Copies the first date for the given tag in the taglist into the variable
+pointed to by @value. Free the date with g_date_free() when it is no longer
+needed.
+given list or if it was #NULL.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if a date was copied, FALSE if the tag didn't exist in the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to read out</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">address of a GDate pointer variable to store the result into</doc>
+            <type name="GLib.Date" c:type="GDate**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_date_index" c:identifier="gst_tag_list_get_date_index">
+        <doc xml:whitespace="preserve">Gets the date that is at the given index for the given tag in the given
+list and copies it into the variable pointed to by @value. Free the date
+with g_date_free() when it is no longer needed.
+given list or if it was #NULL.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if a value was copied, FALSE if the tag didn't exist in the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to read out</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of entry to read out</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location for the result</doc>
+            <type name="GLib.Date" c:type="GDate**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_date_time"
+              c:identifier="gst_tag_list_get_date_time"
+              version="0.10.31">
+        <doc xml:whitespace="preserve">Copies the first datetime for the given tag in the taglist into the variable
+pointed to by @value. Unref the date with gst_date_time_unref() when
+it is no longer needed.
+thegiven list or if it was #NULL.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if a datetime was copied, FALSE if the tag didn't exist in</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to read out</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">address of a #GstDateTime pointer variable to store the result into</doc>
+            <type name="DateTime" c:type="GstDateTime**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_date_time_index"
+              c:identifier="gst_tag_list_get_date_time_index"
+              version="0.10.31">
+        <doc xml:whitespace="preserve">Gets the datetime that is at the given index for the given tag in the given
+list and copies it into the variable pointed to by @value. Unref the datetime
+with gst_date_time_unref() when it is no longer needed.
+given list or if it was #NULL.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if a value was copied, FALSE if the tag didn't exist in the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to read out</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of entry to read out</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location for the result</doc>
+            <type name="DateTime" c:type="GstDateTime**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_double" c:identifier="gst_tag_list_get_double">
+        <doc xml:whitespace="preserve">Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if a value was copied, FALSE if the tag didn't exist in the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to read out</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location for the result</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_double_index"
+              c:identifier="gst_tag_list_get_double_index">
+        <doc xml:whitespace="preserve">Gets the value that is at the given index for the given tag in the given
+list.
+given list.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if a value was copied, FALSE if the tag didn't exist in the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to read out</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of entry to read out</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location for the result</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_float" c:identifier="gst_tag_list_get_float">
+        <doc xml:whitespace="preserve">Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if a value was copied, FALSE if the tag didn't exist in the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to read out</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location for the result</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_float_index"
+              c:identifier="gst_tag_list_get_float_index">
+        <doc xml:whitespace="preserve">Gets the value that is at the given index for the given tag in the given
+list.
+given list.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if a value was copied, FALSE if the tag didn't exist in the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to read out</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of entry to read out</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location for the result</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int" c:identifier="gst_tag_list_get_int">
+        <doc xml:whitespace="preserve">Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if a value was copied, FALSE if the tag didn't exist in the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to read out</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location for the result</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int64" c:identifier="gst_tag_list_get_int64">
+        <doc xml:whitespace="preserve">Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if a value was copied, FALSE if the tag didn't exist in the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to read out</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location for the result</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int64_index"
+              c:identifier="gst_tag_list_get_int64_index">
+        <doc xml:whitespace="preserve">Gets the value that is at the given index for the given tag in the given
+list.
+given list.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if a value was copied, FALSE if the tag didn't exist in the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to read out</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of entry to read out</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location for the result</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int_index" c:identifier="gst_tag_list_get_int_index">
+        <doc xml:whitespace="preserve">Gets the value that is at the given index for the given tag in the given
+list.
+given list.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if a value was copied, FALSE if the tag didn't exist in the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to read out</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of entry to read out</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location for the result</doc>
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_long" c:identifier="gst_tag_list_get_long">
+        <doc xml:whitespace="preserve">Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if a value was copied, FALSE if the tag didn't exist in the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to read out</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location for the result</doc>
+            <type name="glong" c:type="glong*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_long_index" c:identifier="gst_tag_list_get_long_index">
+        <doc xml:whitespace="preserve">Gets the value that is at the given index for the given tag in the given
+list.
+given list.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if a value was copied, FALSE if the tag didn't exist in the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to read out</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of entry to read out</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location for the result</doc>
+            <type name="glong" c:type="glong*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pointer" c:identifier="gst_tag_list_get_pointer">
+        <doc xml:whitespace="preserve">Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if a value was copied, FALSE if the tag didn't exist in the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to read out</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">location for the result</doc>
+            <type name="gpointer" c:type="gpointer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pointer_index"
+              c:identifier="gst_tag_list_get_pointer_index">
+        <doc xml:whitespace="preserve">Gets the value that is at the given index for the given tag in the given
+list.
+given list.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if a value was copied, FALSE if the tag didn't exist in the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to read out</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of entry to read out</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">location for the result</doc>
+            <type name="gpointer" c:type="gpointer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_string" c:identifier="gst_tag_list_get_string">
+        <doc xml:whitespace="preserve">Copies the contents for the given tag into the value, possibly merging
+multiple values into one if multiple values are associated with the tag.
+Use gst_tag_list_get_string_index (list, tag, 0, value) if you want
+to retrieve the first string associated with this tag unmodified.
+The resulting string in @value will be in UTF-8 encoding and should be
+freed by the caller using g_free when no longer needed. Since 0.10.24 the
+returned string is also guaranteed to be non-NULL and non-empty.
+given list.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if a value was copied, FALSE if the tag didn't exist in the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to read out</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location for the result</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_string_index"
+              c:identifier="gst_tag_list_get_string_index">
+        <doc xml:whitespace="preserve">Gets the value that is at the given index for the given tag in the given
+list.
+The resulting string in @value will be in UTF-8 encoding and should be
+freed by the caller using g_free when no longer needed. Since 0.10.24 the
+returned string is also guaranteed to be non-NULL and non-empty.
+given list.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if a value was copied, FALSE if the tag didn't exist in the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to read out</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of entry to read out</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location for the result</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_tag_size" c:identifier="gst_tag_list_get_tag_size">
+        <doc xml:whitespace="preserve">Checks how many value are stored in this tag list for the given tag.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of tags stored</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the tag to query</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uchar" c:identifier="gst_tag_list_get_uchar">
+        <doc xml:whitespace="preserve">Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if a value was copied, FALSE if the tag didn't exist in the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to read out</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location for the result</doc>
+            <type name="guint8" c:type="guchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uchar_index"
+              c:identifier="gst_tag_list_get_uchar_index">
+        <doc xml:whitespace="preserve">Gets the value that is at the given index for the given tag in the given
+list.
+given list.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if a value was copied, FALSE if the tag didn't exist in the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to read out</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of entry to read out</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location for the result</doc>
+            <type name="guint8" c:type="guchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint" c:identifier="gst_tag_list_get_uint">
+        <doc xml:whitespace="preserve">Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if a value was copied, FALSE if the tag didn't exist in the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to read out</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location for the result</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint64" c:identifier="gst_tag_list_get_uint64">
+        <doc xml:whitespace="preserve">Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if a value was copied, FALSE if the tag didn't exist in the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to read out</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location for the result</doc>
+            <type name="guint64" c:type="guint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint64_index"
+              c:identifier="gst_tag_list_get_uint64_index">
+        <doc xml:whitespace="preserve">Gets the value that is at the given index for the given tag in the given
+list.
+given list.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if a value was copied, FALSE if the tag didn't exist in the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to read out</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of entry to read out</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location for the result</doc>
+            <type name="guint64" c:type="guint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint_index" c:identifier="gst_tag_list_get_uint_index">
+        <doc xml:whitespace="preserve">Gets the value that is at the given index for the given tag in the given
+list.
+given list.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if a value was copied, FALSE if the tag didn't exist in the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to read out</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of entry to read out</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location for the result</doc>
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_ulong" c:identifier="gst_tag_list_get_ulong">
+        <doc xml:whitespace="preserve">Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if a value was copied, FALSE if the tag didn't exist in the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to read out</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location for the result</doc>
+            <type name="gulong" c:type="gulong*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_ulong_index"
+              c:identifier="gst_tag_list_get_ulong_index">
+        <doc xml:whitespace="preserve">Gets the value that is at the given index for the given tag in the given
+list.
+given list.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if a value was copied, FALSE if the tag didn't exist in the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to read out</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of entry to read out</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">location for the result</doc>
+            <type name="gulong" c:type="gulong*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value_index"
+              c:identifier="gst_tag_list_get_value_index">
+        <doc xml:whitespace="preserve">Gets the value that is at the given index for the given tag in the given
+list.
+tag wasn't available or the tag doesn't have as many entries</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The GValue for the specified entry or NULL if the</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to read out</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of entry to read out</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert" c:identifier="gst_tag_list_insert">
+        <doc xml:whitespace="preserve">Inserts the tags of the @from list into the first list using the given mode.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="from" transfer-ownership="none">
+            <doc xml:whitespace="preserve">list to merge from</doc>
+            <type name="TagList" c:type="GstTagList*"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the mode to use</doc>
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_empty"
+              c:identifier="gst_tag_list_is_empty"
+              version="0.10.11">
+        <doc xml:whitespace="preserve">Checks if the given taglist is empty.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the taglist is empty, otherwise FALSE.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="merge" c:identifier="gst_tag_list_merge">
+        <doc xml:whitespace="preserve">Merges the two given lists into a new list. If one of the lists is NULL, a
+copy of the other is returned. If both lists are NULL, NULL is returned.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new list</doc>
+          <type name="TagList" c:type="GstTagList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="list2" transfer-ownership="none">
+            <doc xml:whitespace="preserve">second list to merge</doc>
+            <type name="TagList" c:type="GstTagList*"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the mode to use</doc>
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_string_index"
+              c:identifier="gst_tag_list_peek_string_index">
+        <doc xml:whitespace="preserve">Peeks at the value that is at the given index for the given tag in the given
+list.
+The resulting string in @value will be in UTF-8 encoding and doesn't need
+to be freed by the caller. The returned string is also guaranteed to
+be non-NULL and non-empty.
+given list.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE, if a value was set, FALSE if the tag didn't exist in the</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to read out</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of entry to read out</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">location for the result</doc>
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_tag" c:identifier="gst_tag_list_remove_tag">
+        <doc xml:whitespace="preserve">Removes the given tag from the taglist.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to remove</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <callback name="TagMergeFunc" c:type="GstTagMergeFunc">
+      <doc xml:whitespace="preserve">A function for merging multiple values of a tag used when registering
+tags.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the destination #GValue</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="src" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the source #GValue</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="TagMergeMode" c:type="GstTagMergeMode">
+      <doc xml:whitespace="preserve">The different tag merging modes are basically replace, overwrite and append,
+already in the element and (B) the ones that are supplied to the element (
+e.g. via gst_tag_setter_merge_tags() / gst_tag_setter_add_tags() or a
+%GST_EVENT_TAG), how are these tags merged?
+In the table below this is shown for the cases that a tag exists in the list
+(A) or does not exists (!A) and combinations thereof.
+&lt;table frame="all" colsep="1" rowsep="1"&gt;
+&lt;title&gt;merge mode&lt;/title&gt;
+&lt;tgroup cols='5' align='left'&gt;
+&lt;thead&gt;
+&lt;row&gt;
+&lt;entry&gt;merge mode&lt;/entry&gt;
+&lt;entry&gt;A + B&lt;/entry&gt;
+&lt;entry&gt;A + !B&lt;/entry&gt;
+&lt;entry&gt;!A + B&lt;/entry&gt;
+&lt;entry&gt;!A + !B&lt;/entry&gt;
+&lt;/row&gt;
+&lt;/thead&gt;
+&lt;tbody&gt;
+&lt;row&gt;
+&lt;entry&gt;REPLACE_ALL&lt;/entry&gt;
+&lt;entry&gt;B&lt;/entry&gt;
+&lt;entry&gt;-&lt;/entry&gt;
+&lt;entry&gt;B&lt;/entry&gt;
+&lt;entry&gt;-&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+&lt;entry&gt;REPLACE&lt;/entry&gt;
+&lt;entry&gt;B&lt;/entry&gt;
+&lt;entry&gt;A&lt;/entry&gt;
+&lt;entry&gt;B&lt;/entry&gt;
+&lt;entry&gt;-&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+&lt;entry&gt;APPEND&lt;/entry&gt;
+&lt;entry&gt;A, B&lt;/entry&gt;
+&lt;entry&gt;A&lt;/entry&gt;
+&lt;entry&gt;B&lt;/entry&gt;
+&lt;entry&gt;-&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+&lt;entry&gt;PREPEND&lt;/entry&gt;
+&lt;entry&gt;B, A&lt;/entry&gt;
+&lt;entry&gt;A&lt;/entry&gt;
+&lt;entry&gt;B&lt;/entry&gt;
+&lt;entry&gt;-&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+&lt;entry&gt;KEEP&lt;/entry&gt;
+&lt;entry&gt;A&lt;/entry&gt;
+&lt;entry&gt;A&lt;/entry&gt;
+&lt;entry&gt;B&lt;/entry&gt;
+&lt;entry&gt;-&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+&lt;entry&gt;KEEP_ALL&lt;/entry&gt;
+&lt;entry&gt;A&lt;/entry&gt;
+&lt;entry&gt;A&lt;/entry&gt;
+&lt;entry&gt;-&lt;/entry&gt;
+&lt;entry&gt;-&lt;/entry&gt;
+&lt;/row&gt;
+&lt;/tbody&gt;
+&lt;/tgroup&gt;
+&lt;/table&gt;</doc>
+      <member name="undefined"
+              value="0"
+              c:identifier="GST_TAG_MERGE_UNDEFINED"/>
+      <member name="replace_all"
+              value="1"
+              c:identifier="GST_TAG_MERGE_REPLACE_ALL"/>
+      <member name="replace" value="2" c:identifier="GST_TAG_MERGE_REPLACE"/>
+      <member name="append" value="3" c:identifier="GST_TAG_MERGE_APPEND"/>
+      <member name="prepend" value="4" c:identifier="GST_TAG_MERGE_PREPEND"/>
+      <member name="keep" value="5" c:identifier="GST_TAG_MERGE_KEEP"/>
+      <member name="keep_all" value="6" c:identifier="GST_TAG_MERGE_KEEP_ALL"/>
+      <member name="count" value="7" c:identifier="GST_TAG_MERGE_COUNT"/>
+    </enumeration>
+    <interface name="TagSetter"
+               c:symbol-prefix="tag_setter"
+               c:type="GstTagSetter"
+               glib:type-name="GstTagSetter"
+               glib:get-type="gst_tag_setter_get_type">
+      <doc xml:whitespace="preserve">Element interface that allows setting of media metadata.
+Elements that support changing a stream's metadata will implement this
+interface. Examples of such elements are 'vorbisenc', 'theoraenc' and
+'id3v2mux'.
+If you just want to retrieve metadata in your application then all you
+need to do is watch for tag messages on your pipeline's bus. This
+interface is only for setting metadata, not for extracting it. To set tags
+from the application, find tagsetter elements and set tags using e.g.
+gst_tag_setter_merge_tags() or gst_tag_setter_add_tags(). Also consider
+setting the #GstTagMergeMode that is used for tag events that arrive at the
+tagsetter element (default mode is to keep existing tags).
+The application should do that before the element goes to %GST_STATE_PAUSED.
+Elements implementing the #GstTagSetter interface often have to merge
+any tags received from upstream and the tags set by the application via
+the interface. This can be done like this:
+|[
+GstTagMergeMode merge_mode;
+const GstTagList *application_tags;
+const GstTagList *event_tags;
+GstTagSetter *tagsetter;
+GstTagList *result;
+tagsetter = GST_TAG_SETTER (element);
+merge_mode = gst_tag_setter_get_tag_merge_mode (tagsetter);
+application_tags = gst_tag_setter_get_tag_list (tagsetter);
+event_tags = (const GstTagList *) element-&gt;event_tags;
+GST_LOG_OBJECT (tagsetter, "merging tags, merge mode = %d", merge_mode);
+result = gst_tag_list_merge (application_tags, event_tags, merge_mode);
+]|
+Last reviewed on 2006-05-18 (0.10.6)</doc>
+      <prerequisite name="Element"/>
+      <method name="add_tag_valist"
+              c:identifier="gst_tag_setter_add_tag_valist"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Adds the given tag / value pairs on the setter using the given merge mode.
+The list must be terminated with NULL.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the mode to use</doc>
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="var_args" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag / value pairs to set</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_tag_valist_values"
+              c:identifier="gst_tag_setter_add_tag_valist_values"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Adds the given tag / GValue pairs on the setter using the given merge mode.
+The list must be terminated with NULL.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the mode to use</doc>
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="var_args" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag / GValue pairs to set</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_tag_value"
+              c:identifier="gst_tag_setter_add_tag_value"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Adds the given tag / GValue pair on the setter using the given merge mode.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the mode to use</doc>
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">GValue to set for the tag</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_tag_values"
+              c:identifier="gst_tag_setter_add_tag_values"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Adds the given tag / GValue pairs on the setter using the given merge mode.
+The list must be terminated with NULL.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the mode to use</doc>
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_tags"
+              c:identifier="gst_tag_setter_add_tags"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Adds the given tag / value pairs on the setter using the given merge mode.
+The list must be terminated with NULL.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the mode to use</doc>
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <doc xml:whitespace="preserve">tag to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_tag_list" c:identifier="gst_tag_setter_get_tag_list">
+        <doc xml:whitespace="preserve">Returns the current list of tags the setter uses.  The list should not be
+modified or freed.
+This function is not thread-safe.
+setter or NULL if none is used.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a current snapshot of the taglist used in the</doc>
+          <type name="TagList" c:type="GstTagList*"/>
+        </return-value>
+      </method>
+      <method name="get_tag_merge_mode"
+              c:identifier="gst_tag_setter_get_tag_merge_mode">
+        <doc xml:whitespace="preserve">Queries the mode by which tags inside the setter are overwritten by tags
+from events</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the merge mode used inside the element.</doc>
+          <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+        </return-value>
+      </method>
+      <method name="merge_tags" c:identifier="gst_tag_setter_merge_tags">
+        <doc xml:whitespace="preserve">Merges the given list into the setter's list using the given mode.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a tag list to merge from</doc>
+            <type name="TagList" c:type="GstTagList*"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the mode to merge with</doc>
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reset_tags"
+              c:identifier="gst_tag_setter_reset_tags"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Reset the internal taglist. Elements should call this from within the
+state-change handler.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_tag_merge_mode"
+              c:identifier="gst_tag_setter_set_tag_merge_mode">
+        <doc xml:whitespace="preserve">Sets the given merge mode that is used for adding tags from events to tags
+specified by this interface. The default is #GST_TAG_MERGE_KEEP, which keeps
+the tags set with this interface and discards tags from events.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The mode with which tags are added</doc>
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="TagSetterIFace" c:type="GstTagSetterIFace">
+      <doc xml:whitespace="preserve">#GstTagSetterIFace interface.</doc>
+      <field name="g_iface" writable="1">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+    </record>
+    <class name="Task"
+           c:symbol-prefix="task"
+           c:type="GstTask"
+           parent="Object"
+           glib:type-name="GstTask"
+           glib:get-type="gst_task_get_type"
+           glib:type-struct="TaskClass">
+      <doc xml:whitespace="preserve">#GstTask is used by #GstElement and #GstPad to provide the data passing
+threads in a #GstPipeline.
+A #GstPad will typically start a #GstTask to push or pull data to/from the
+peer pads. Most source elements start a #GstTask to push data. In some cases
+a demuxer element can start a #GstTask to pull data from a peer element. This
+is typically done when the demuxer can perform random access on the upstream
+peer element for improved performance.
+Although convenience functions exist on #GstPad to start/pause/stop tasks, it
+might sometimes be needed to create a #GstTask manually if it is not related to
+a #GstPad.
+Before the #GstTask can be run, it needs a #GStaticRecMutex that can be set with
+gst_task_set_lock().
+The task can be started, paused and stopped with gst_task_start(), gst_task_pause()
+and gst_task_stop() respectively or with the gst_task_set_state() function.
+A #GstTask will repeatedly call the #GstTaskFunction with the user data
+that was provided when creating the task with gst_task_create(). While calling
+the function it will acquire the provided lock. The provided lock is released
+when the task pauses or stops.
+Stopping a task with gst_task_stop() will not immediately make sure the task is
+not running anymore. Use gst_task_join() to make sure the task is completely
+stopped and the thread is stopped.
+After creating a #GstTask, use gst_object_unref() to free its resources. This can
+only be done it the task is not running anymore.
+Task functions can send a #GstMessage to send out-of-band data to the
+application. The application can receive messages from the #GstBus in its
+mainloop.
+For debugging perposes, the task will configure its object name as the thread
+name on Linux. Please note that the object name should be configured before the
+task is started; changing the object name after the task has been started, has
+no effect on the thread name.
+Last reviewed on 2010-03-15 (0.10.29)</doc>
+      <function name="cleanup_all" c:identifier="gst_task_cleanup_all">
+        <doc xml:whitespace="preserve">Wait for all tasks to be stopped. This is mainly used internally
+to ensure proper cleanup of internal data structures in test suites.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </function>
+      <function name="create"
+                c:identifier="gst_task_create"
+                introspectable="0">
+        <doc xml:whitespace="preserve">Create a new Task that will repeatedly call the provided @func
+with @data as a parameter. Typically the task will run in
+a new thread.
+The function cannot be changed after the task has been created. You
+must create a new #GstTask to change the function.
+This function will not yet create and start a thread. Use gst_task_start() or
+gst_task_pause() to create and start the GThread.
+Before the task can be used, a #GStaticRecMutex must be configured using the
+gst_task_set_lock() function. This lock will always be acquired while
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">A new #GstTask.</doc>
+          <type name="Task" c:type="GstTask*"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none" closure="1">
+            <doc xml:whitespace="preserve">The #GstTaskFunction to use</doc>
+            <type name="TaskFunction" c:type="GstTaskFunction"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">User data to pass to @func</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_pool"
+              c:identifier="gst_task_get_pool"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Get the #GstTaskPool that this task will use for its streaming
+threads.
+MT safe.
+after usage.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the #GstTaskPool used by @task. gst_object_unref()</doc>
+          <type name="TaskPool" c:type="GstTaskPool*"/>
+        </return-value>
+      </method>
+      <method name="get_state" c:identifier="gst_task_get_state">
+        <doc xml:whitespace="preserve">Get the current state of the task.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #GstTaskState of the task</doc>
+          <type name="TaskState" c:type="GstTaskState"/>
+        </return-value>
+      </method>
+      <method name="join" c:identifier="gst_task_join">
+        <doc xml:whitespace="preserve">Joins @task. After this call, it is safe to unref the task
+and clean up the lock set with gst_task_set_lock().
+The task will automatically be stopped with this call.
+This function cannot be called from within a task function as this
+would cause a deadlock. The function will detect this and print a
+g_warning.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the task could be joined.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="pause" c:identifier="gst_task_pause">
+        <doc xml:whitespace="preserve">Pauses @task. This method can also be called on a task in the
+stopped state, in which case a thread will be started and will remain
+in the paused state. This function does not wait for the task to complete
+the paused state.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the task could be paused.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_lock" c:identifier="gst_task_set_lock">
+        <doc xml:whitespace="preserve">Set the mutex used by the task. The mutex will be acquired before
+calling the #GstTaskFunction.
+This function has to be called before calling gst_task_pause() or
+gst_task_start().
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mutex" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GMutex to use</doc>
+            <type name="GLib.StaticRecMutex" c:type="GStaticRecMutex*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_pool"
+              c:identifier="gst_task_set_pool"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Set @pool as the new GstTaskPool for @task. Any new streaming threads that
+will be created by @task will now use @pool.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pool" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstTaskPool</doc>
+            <type name="TaskPool" c:type="GstTaskPool*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_priority"
+              c:identifier="gst_task_set_priority"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Changes the priority of @task to @priority.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="priority" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a new priority for @task</doc>
+            <type name="GLib.ThreadPriority" c:type="GThreadPriority"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_state"
+              c:identifier="gst_task_set_state"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Sets the state of @task to @state.
+The @task must have a lock associated with it using
+gst_task_set_lock() when going to GST_TASK_STARTED or GST_TASK_PAUSED or
+this function will return %FALSE.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the state could be changed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new task state</doc>
+            <type name="TaskState" c:type="GstTaskState"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_thread_callbacks"
+              c:identifier="gst_task_set_thread_callbacks"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Set callbacks which will be executed when a new thread is needed, the thread
+function is entered and left and when the thread is joined.
+By default a thread for @task will be created from a default thread pool.
+Objects can use custom GThreads or can perform additional configuration of
+the threads (such as changing the thread priority) by installing callbacks.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callbacks" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstTaskThreadCallbacks pointer</doc>
+            <type name="TaskThreadCallbacks" c:type="GstTaskThreadCallbacks*"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data passed to the callbacks</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="async">
+            <doc xml:whitespace="preserve">called when @user_data is no longer referenced</doc>
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="start" c:identifier="gst_task_start">
+        <doc xml:whitespace="preserve">Starts @task. The @task must have a lock associated with it using
+gst_task_set_lock() or this function will return %FALSE.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the task could be started.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="stop" c:identifier="gst_task_stop">
+        <doc xml:whitespace="preserve">Stops @task. This method merely schedules the task to stop and
+will not wait for the task to have completely stopped. Use
+gst_task_join() to stop and wait for completion.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the task could be stopped.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="state">
+        <type name="TaskState" c:type="GstTaskState"/>
+      </field>
+      <field name="cond">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="lock">
+        <type name="GLib.StaticRecMutex" c:type="GStaticRecMutex*"/>
+      </field>
+      <field name="func">
+        <type name="TaskFunction" c:type="GstTaskFunction"/>
+      </field>
+      <field name="data">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="running">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <union name="abidata" c:type="abidata">
+        <record name="ABI" c:type="ABI">
+          <field name="thread" writable="1">
+            <type name="GLib.Thread" c:type="GThread*"/>
+          </field>
+        </record>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </field>
+      </union>
+      <field name="priv">
+        <type name="TaskPrivate" c:type="GstTaskPrivate*"/>
+      </field>
+    </class>
+    <record name="TaskClass"
+            c:type="GstTaskClass"
+            glib:is-gtype-struct-for="Task">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="pool" readable="0" private="1">
+        <type name="TaskPool" c:type="GstTaskPool*"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <callback name="TaskFunction" c:type="GstTaskFunction">
+      <doc xml:whitespace="preserve">A function that will repeatedly be called in the thread created by
+a #GstTask.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">user data passed to the function</doc>
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="TaskPool"
+           c:symbol-prefix="task_pool"
+           c:type="GstTaskPool"
+           parent="Object"
+           glib:type-name="GstTaskPool"
+           glib:get-type="gst_task_pool_get_type"
+           glib:type-struct="TaskPoolClass">
+      <doc xml:whitespace="preserve">This object provides an abstraction for creating threads. The default
+implementation uses a regular GThreadPool to start tasks.
+Subclasses can be made to create custom threads.
+Last reviewed on 2009-04-23 (0.10.24)</doc>
+      <constructor name="new"
+                   c:identifier="gst_task_pool_new"
+                   version="0.10.24">
+        <doc xml:whitespace="preserve">Create a new default task pool. The default task pool will use a regular
+GThreadPool for threads.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstTaskPool. gst_object_unref() after usage.</doc>
+          <type name="TaskPool" c:type="GstTaskPool*"/>
+        </return-value>
+      </constructor>
+      <virtual-method name="cleanup" invoker="cleanup" version="0.10.24">
+        <doc xml:whitespace="preserve">Wait for all tasks to be stopped. This is mainly used internally
+to ensure proper cleanup of internal data structures in test suites.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="join" invoker="join" version="0.10.24">
+        <doc xml:whitespace="preserve">Join a task and/or return it to the pool. @id is the id obtained from 
+gst_task_pool_push().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the id</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="prepare"
+                      invoker="prepare"
+                      version="0.10.24"
+                      throws="1">
+        <doc xml:whitespace="preserve">Prepare the taskpool for accepting gst_task_pool_push() operations.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="push"
+                      invoker="push"
+                      version="0.10.24"
+                      introspectable="0"
+                      throws="1">
+        <doc xml:whitespace="preserve">Start the execution of a new thread from @pool.
+function. This pointer can be NULL, you must check @error to detect
+errors.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a pointer that should be used for the gst_task_pool_join</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none" closure="1">
+            <doc xml:whitespace="preserve">the function to call</doc>
+            <type name="TaskPoolFunction" c:type="GstTaskPoolFunction"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="1">
+            <doc xml:whitespace="preserve">data to pass to @func</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="cleanup"
+              c:identifier="gst_task_pool_cleanup"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Wait for all tasks to be stopped. This is mainly used internally
+to ensure proper cleanup of internal data structures in test suites.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="join" c:identifier="gst_task_pool_join" version="0.10.24">
+        <doc xml:whitespace="preserve">Join a task and/or return it to the pool. @id is the id obtained from 
+gst_task_pool_push().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the id</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prepare"
+              c:identifier="gst_task_pool_prepare"
+              version="0.10.24"
+              throws="1">
+        <doc xml:whitespace="preserve">Prepare the taskpool for accepting gst_task_pool_push() operations.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="push"
+              c:identifier="gst_task_pool_push"
+              version="0.10.24"
+              introspectable="0"
+              throws="1">
+        <doc xml:whitespace="preserve">Start the execution of a new thread from @pool.
+function. This pointer can be NULL, you must check @error to detect
+errors.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a pointer that should be used for the gst_task_pool_join</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none" closure="1">
+            <doc xml:whitespace="preserve">the function to call</doc>
+            <type name="TaskPoolFunction" c:type="GstTaskPoolFunction"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data to pass to @func</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="pool" readable="0" private="1">
+        <type name="GLib.ThreadPool" c:type="GThreadPool*"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </class>
+    <record name="TaskPoolClass"
+            c:type="GstTaskPoolClass"
+            glib:is-gtype-struct-for="TaskPool">
+      <doc xml:whitespace="preserve">The #GstTaskPoolClass object.</doc>
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="prepare">
+        <callback name="prepare" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="pool" transfer-ownership="none">
+              <type name="TaskPool" c:type="GstTaskPool*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="cleanup">
+        <callback name="cleanup">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="pool" transfer-ownership="none">
+              <type name="TaskPool" c:type="GstTaskPool*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="push" introspectable="0">
+        <callback name="push" introspectable="0" throws="1">
+          <return-value>
+            <doc xml:whitespace="preserve">a pointer that should be used for the gst_task_pool_join</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </return-value>
+          <parameters>
+            <parameter name="pool" transfer-ownership="none">
+              <type name="TaskPool" c:type="GstTaskPool*"/>
+            </parameter>
+            <parameter name="func" transfer-ownership="none" closure="2">
+              <doc xml:whitespace="preserve">the function to call</doc>
+              <type name="TaskPoolFunction" c:type="GstTaskPoolFunction"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="2">
+              <doc xml:whitespace="preserve">data to pass to @func</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="join">
+        <callback name="join">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="pool" transfer-ownership="none">
+              <type name="TaskPool" c:type="GstTaskPool*"/>
+            </parameter>
+            <parameter name="id" transfer-ownership="none">
+              <doc xml:whitespace="preserve">the id</doc>
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <callback name="TaskPoolFunction"
+              c:type="GstTaskPoolFunction"
+              version="0.10.24">
+      <doc xml:whitespace="preserve">Task function, see gst_task_pool_push().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">user data for the task function</doc>
+          <type name="gpointer" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="TaskPrivate" c:type="GstTaskPrivate" disguised="1">
+    </record>
+    <enumeration name="TaskState" c:type="GstTaskState">
+      <doc xml:whitespace="preserve">The different states a task can be in</doc>
+      <member name="started" value="0" c:identifier="GST_TASK_STARTED"/>
+      <member name="stopped" value="1" c:identifier="GST_TASK_STOPPED"/>
+      <member name="paused" value="2" c:identifier="GST_TASK_PAUSED"/>
+    </enumeration>
+    <record name="TaskThreadCallbacks"
+            c:type="GstTaskThreadCallbacks"
+            version="0.10.24">
+      <doc xml:whitespace="preserve">Custom GstTask thread callback functions that can be installed.</doc>
+      <field name="enter_thread">
+        <callback name="enter_thread">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="task" transfer-ownership="none">
+              <type name="Task" c:type="GstTask*"/>
+            </parameter>
+            <parameter name="thread" transfer-ownership="none">
+              <type name="GLib.Thread" c:type="GThread*"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="2">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="leave_thread">
+        <callback name="leave_thread">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="task" transfer-ownership="none">
+              <type name="Task" c:type="GstTask*"/>
+            </parameter>
+            <parameter name="thread" transfer-ownership="none">
+              <type name="GLib.Thread" c:type="GThread*"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="2">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <record name="Trace" c:type="GstTrace">
+      <doc xml:whitespace="preserve">Traces allows to track object allocation. They provide a instance counter per
+#GType. The counter is incremented for each object allocated and decremented
+it when it's freed.
+&lt;example&gt;
+&lt;title&gt;Tracing object instances&lt;/title&gt;
+&lt;programlisting&gt;
+// trace un-freed object instances
+gst_alloc_trace_set_flags_all (GST_ALLOC_TRACE_LIVE);
+if (!gst_alloc_trace_available ()) {
+g_warning ("Trace not available (recompile with trace enabled).");
+}
+gst_alloc_trace_print_live ();
+// do something here
+gst_alloc_trace_print_live ();
+&lt;/programlisting&gt;
+&lt;/example&gt;
+Last reviewed on 2005-11-21 (0.9.5)</doc>
+      <field name="filename" readable="0" private="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="fd" readable="0" private="1">
+        <type name="gint" c:type="int"/>
+      </field>
+      <field name="buf" readable="0" private="1">
+        <type name="TraceEntry" c:type="GstTraceEntry*"/>
+      </field>
+      <field name="bufsize" readable="0" private="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="bufoffset" readable="0" private="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <method name="destroy" c:identifier="gst_trace_destroy">
+        <doc xml:whitespace="preserve">Flush an close the previously allocated @trace.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="flush" c:identifier="gst_trace_flush">
+        <doc xml:whitespace="preserve">Flush any pending trace entries in @trace to the trace file.
+flushed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_default" c:identifier="gst_trace_set_default">
+        <doc xml:whitespace="preserve">Set the default #GstTrace to @trace.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="text_flush" c:identifier="gst_trace_text_flush">
+        <doc xml:whitespace="preserve">Flush any pending trace entries in @trace to the trace file,
+formatted as a text line with timestamp and sequence numbers.
+flushed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="TraceEntry" c:type="GstTraceEntry">
+      <field name="timestamp" writable="1">
+        <type name="gint64" c:type="gint64"/>
+      </field>
+      <field name="sequence" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="data" writable="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="message" writable="1">
+        <array zero-terminated="0" c:type="gchar" fixed-size="112">
+          <type name="gchar" c:type="gchar"/>
+        </array>
+      </field>
+    </record>
+    <record name="TypeFind" c:type="GstTypeFind">
+      <doc xml:whitespace="preserve">The following functions allow you to detect the media type of an unknown
+stream.
+Last reviewed on 2005-11-09 (0.9.4)</doc>
+      <field name="peek">
+        <callback name="peek">
+          <return-value transfer-ownership="none">
+            <type name="guint8" c:type="guint8*"/>
+          </return-value>
+          <parameters>
+            <parameter name="data" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+            <parameter name="offset" transfer-ownership="none">
+              <type name="gint64" c:type="gint64"/>
+            </parameter>
+            <parameter name="size" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="suggest">
+        <callback name="suggest">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="data" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+            <parameter name="probability" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Caps" c:type="GstCaps*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="data" writable="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="get_length">
+        <callback name="get_length">
+          <return-value transfer-ownership="none">
+            <type name="guint64" c:type="guint64"/>
+          </return-value>
+          <parameters>
+            <parameter name="data" transfer-ownership="none">
+              <type name="gpointer" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+      <method name="get_length" c:identifier="gst_type_find_get_length">
+        <doc xml:whitespace="preserve">Get the length of the data stream.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The length of the data stream, or 0 if it is not available.</doc>
+          <type name="guint64" c:type="guint64"/>
+        </return-value>
+      </method>
+      <method name="peek" c:identifier="gst_type_find_peek">
+        <doc xml:whitespace="preserve">Returns the @size bytes of the stream to identify beginning at offset. If
+offset is a positive number, the offset is relative to the beginning of the
+stream, if offset is a negative number the offset is relative to the end of
+the stream. The returned memory is valid until the typefinding function
+returns and must not be freed.
+if that data is not available.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the requested data, or NULL</doc>
+          <array length="1" c:type="guint8*">
+            <type name="guint8" c:type="guint8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The offset</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="size"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">The number of bytes to return</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="suggest" c:identifier="gst_type_find_suggest">
+        <doc xml:whitespace="preserve">If a #GstTypeFindFunction calls this function it suggests the caps with the
+given probability. A #GstTypeFindFunction may supply different suggestions
+in one call.
+It is up to the caller of the #GstTypeFindFunction to interpret these values.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="probability" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The probability in percent that the suggestion is right</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The fixed #GstCaps to suggest</doc>
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="suggest_simple"
+              c:identifier="gst_type_find_suggest_simple"
+              version="0.10.20"
+              introspectable="0">
+        <doc xml:whitespace="preserve">If a #GstTypeFindFunction calls this function it suggests the caps with the
+given probability. A #GstTypeFindFunction may supply different suggestions
+in one call. It is up to the caller of the #GstTypeFindFunction to interpret
+these values.
+This function is similar to gst_type_find_suggest(), only that instead of
+passing a #GstCaps argument you can create the caps on the fly in the same
+way as you can with gst_caps_new_simple().
+Make sure you terminate the list of arguments with a NULL argument and that
+the values passed have the correct type (in terms of width in bytes when
+passed to the vararg function - this applies particularly to gdouble and
+guint64 arguments).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="probability" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The probability in percent that the suggestion is right</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="media_type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the media type of the suggested caps</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="fieldname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">first field of the suggested caps, or NULL</doc>
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <class name="TypeFindFactory"
+           c:symbol-prefix="type_find_factory"
+           c:type="GstTypeFindFactory"
+           parent="PluginFeature"
+           glib:type-name="GstTypeFindFactory"
+           glib:get-type="gst_type_find_factory_get_type"
+           glib:type-struct="TypeFindFactoryClass">
+      <doc xml:whitespace="preserve">These functions allow querying informations about registered typefind
+functions. How to create and register these functions is described in
+the section &lt;link linkend="gstreamer-Writing-typefind-functions"&gt;
+"Writing typefind functions"&lt;/link&gt;.
+&lt;example&gt;
+&lt;title&gt;how to write a simple typefinder&lt;/title&gt;
+&lt;programlisting&gt;
+typedef struct {
+guint8 *data;
+guint size;
+guint probability;
+GstCaps *data;
+} MyTypeFind;
+static void
+my_peek (gpointer data, gint64 offset, guint size)
+{
+MyTypeFind *find = (MyTypeFind *) data;
+if (offset &amp;gt;= 0 &amp;amp;&amp;amp; offset + size &amp;lt;= find-&gt;size) {
+return find-&gt;data + offset;
+}
+return NULL;
+}
+static void
+my_suggest (gpointer data, guint probability, GstCaps *caps)
+{
+MyTypeFind *find = (MyTypeFind *) data;
+if (probability &amp;gt; find-&gt;probability) {
+find-&gt;probability = probability;
+gst_caps_replace (&amp;amp;find-&gt;caps, caps);
+}
+}
+static GstCaps *
+find_type (guint8 *data, guint size)
+{
+GList *walk, *type_list;
+MyTypeFind find = {data, size, 0, NULL};
+GstTypeFind gst_find = {my_peek, my_suggest, &amp;amp;find, };
+walk = type_list = gst_type_find_factory_get_list ();
+while (walk) {
+GstTypeFindFactory *factory = GST_TYPE_FIND_FACTORY (walk-&gt;data);
+walk = g_list_next (walk)
+gst_type_find_factory_call_function (factory, &amp;amp;gst_find);
+}
+g_list_free (type_list);
+return find.caps;
+};
+&lt;/programlisting&gt;
+&lt;/example&gt;
+The above example shows how to write a very simple typefinder that
+identifies the given data. You can get quite a bit more complicated than
+that though.
+Last reviewed on 2005-11-09 (0.9.4)</doc>
+      <function name="get_list" c:identifier="gst_type_find_factory_get_list">
+        <doc xml:whitespace="preserve">Gets the list of all registered typefind factories. You must free the
+list using gst_plugin_feature_list_free().
+The returned factories are sorted by highest rank first, and then by
+factory name. (behaviour change since 0.10.26)
+registered #GstTypeFindFactory.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the list of all</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="TypeFindFactory"/>
+          </type>
+        </return-value>
+      </function>
+      <method name="call_function"
+              c:identifier="gst_type_find_factory_call_function">
+        <doc xml:whitespace="preserve">Calls the #GstTypeFindFunction associated with this factory.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="find" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a properly setup #GstTypeFind entry. The get_data and suggest_type members must be set.</doc>
+            <type name="TypeFind" c:type="GstTypeFind*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_caps" c:identifier="gst_type_find_factory_get_caps">
+        <doc xml:whitespace="preserve">Gets the #GstCaps associated with a typefind factory.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstCaps associated with this factory</doc>
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="get_extensions"
+              c:identifier="gst_type_find_factory_get_extensions">
+        <doc xml:whitespace="preserve">Gets the extensions associated with a #GstTypeFindFactory. The returned
+array should not be changed. If you need to change stuff in it, you should
+copy it using g_strdupv().  This function may return NULL to indicate
+a 0-length list.
+NULL-terminated array of extensions associated with this factory</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <field name="feature">
+        <type name="PluginFeature" c:type="GstPluginFeature"/>
+      </field>
+      <field name="function" readable="0" private="1">
+        <type name="TypeFindFunction" c:type="GstTypeFindFunction"/>
+      </field>
+      <field name="extensions" readable="0" private="1">
+        <type name="utf8" c:type="gchar**"/>
+      </field>
+      <field name="caps" readable="0" private="1">
+        <type name="Caps" c:type="GstCaps*"/>
+      </field>
+      <field name="user_data" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="user_data_notify" readable="0" private="1">
+        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </class>
+    <record name="TypeFindFactoryClass"
+            c:type="GstTypeFindFactoryClass"
+            glib:is-gtype-struct-for="TypeFindFactory">
+      <field name="parent">
+        <type name="PluginFeatureClass" c:type="GstPluginFeatureClass"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <callback name="TypeFindFunction" c:type="GstTypeFindFunction">
+      <doc xml:whitespace="preserve">A function that will be called by typefinding.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="find" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GstTypeFind structure</doc>
+          <type name="TypeFind" c:type="GstTypeFind*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">optionnal data to pass to the function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="TypeFindProbability" c:type="GstTypeFindProbability">
+      <doc xml:whitespace="preserve">The probability of the typefind function. Higher values have more certainty
+in doing a reliable typefind.</doc>
+      <member name="minimum" value="1" c:identifier="GST_TYPE_FIND_MINIMUM"/>
+      <member name="possible"
+              value="50"
+              c:identifier="GST_TYPE_FIND_POSSIBLE"/>
+      <member name="likely" value="80" c:identifier="GST_TYPE_FIND_LIKELY"/>
+      <member name="nearly_certain"
+              value="99"
+              c:identifier="GST_TYPE_FIND_NEARLY_CERTAIN"/>
+      <member name="maximum" value="100" c:identifier="GST_TYPE_FIND_MAXIMUM"/>
+    </enumeration>
+    <record name="TypeNameData" c:type="GstTypeNameData">
+      <doc xml:whitespace="preserve">Structure used for filtering based on @name and @type.</doc>
+      <field name="name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+    </record>
+    <interface name="URIHandler"
+               c:symbol-prefix="uri_handler"
+               c:type="GstURIHandler"
+               glib:type-name="GstURIHandler"
+               glib:get-type="gst_uri_handler_get_type"
+               glib:type-struct="URIHandlerInterface">
+      <doc xml:whitespace="preserve">The URIHandler is an interface that is implemented by Source and Sink 
+#GstElement to simplify then handling of URI.
+An application can use the following functions to quickly get an element
+that handles the given URI for reading or writing
+(gst_element_make_from_uri()).
+Source and Sink plugins should implement this interface when possible.
+Last reviewed on 2005-11-09 (0.9.4)</doc>
+      <virtual-method name="get_uri" invoker="get_uri">
+        <doc xml:whitespace="preserve">Gets the currently handled URI.
+Returns NULL if there are no URI currently handled. The
+returned string must not be modified or freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the URI currently handled by the @handler.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="new_uri" invoker="new_uri">
+        <doc xml:whitespace="preserve">Emits the new-uri signal for a given handler, when that handler has a new URI.
+This function should only be called by URI handlers themselves.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new URI or NULL if it was unset</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_uri" invoker="set_uri">
+        <doc xml:whitespace="preserve">Tries to set the URI of the given handler.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the URI was set successfully, else FALSE.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">URI to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_protocols"
+              c:identifier="gst_uri_handler_get_protocols">
+        <doc xml:whitespace="preserve">Gets the list of protocols supported by @handler. This list may not be
+modified.
+supported protocols. Returns NULL if the @handler isn't implemented
+properly, or the @handler doesn't support any protocols.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="get_uri" c:identifier="gst_uri_handler_get_uri">
+        <doc xml:whitespace="preserve">Gets the currently handled URI.
+Returns NULL if there are no URI currently handled. The
+returned string must not be modified or freed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the URI currently handled by the @handler.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_uri_type" c:identifier="gst_uri_handler_get_uri_type">
+        <doc xml:whitespace="preserve">Gets the type of the given URI handler
+Returns #GST_URI_UNKNOWN if the @handler isn't implemented correctly.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstURIType of the URI handler.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="new_uri" c:identifier="gst_uri_handler_new_uri">
+        <doc xml:whitespace="preserve">Emits the new-uri signal for a given handler, when that handler has a new URI.
+This function should only be called by URI handlers themselves.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new URI or NULL if it was unset</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_uri" c:identifier="gst_uri_handler_set_uri">
+        <doc xml:whitespace="preserve">Tries to set the URI of the given handler.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the URI was set successfully, else FALSE.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">URI to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="new-uri">
+        <doc xml:whitespace="preserve">The URI of the given @handler has changed.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The new URI, or NULL if the URI was removed</doc>
+            <type name="utf8"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </interface>
+    <record name="URIHandlerInterface"
+            c:type="GstURIHandlerInterface"
+            glib:is-gtype-struct-for="URIHandler">
+      <doc xml:whitespace="preserve">Any #GstElement using this interface should implement these methods.</doc>
+      <field name="parent">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="new_uri">
+        <callback name="new_uri">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="handler" transfer-ownership="none">
+              <type name="URIHandler" c:type="GstURIHandler*"/>
+            </parameter>
+            <parameter name="uri" transfer-ownership="none">
+              <doc xml:whitespace="preserve">new URI or NULL if it was unset</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_type">
+        <callback name="get_type">
+          <return-value transfer-ownership="none">
+            <type name="URIType" c:type="GstURIType"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="get_protocols" introspectable="0">
+        <callback name="get_protocols" introspectable="0">
+          <return-value>
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </return-value>
+        </callback>
+      </field>
+      <field name="get_uri">
+        <callback name="get_uri">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">the URI currently handled by the @handler.</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="handler" transfer-ownership="none">
+              <type name="URIHandler" c:type="GstURIHandler*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_uri">
+        <callback name="set_uri">
+          <return-value transfer-ownership="none">
+            <doc xml:whitespace="preserve">TRUE if the URI was set successfully, else FALSE.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="handler" transfer-ownership="none">
+              <type name="URIHandler" c:type="GstURIHandler*"/>
+            </parameter>
+            <parameter name="uri" transfer-ownership="none">
+              <doc xml:whitespace="preserve">URI to set</doc>
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_type_full">
+        <callback name="get_type_full">
+          <return-value transfer-ownership="none">
+            <type name="URIType" c:type="GstURIType"/>
+          </return-value>
+          <parameters>
+            <parameter name="type" transfer-ownership="none">
+              <type name="GType" c:type="GType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_protocols_full" introspectable="0">
+        <callback name="get_protocols_full" introspectable="0">
+          <return-value>
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </return-value>
+          <parameters>
+            <parameter name="type" transfer-ownership="none">
+              <type name="GType" c:type="GType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <enumeration name="URIType" c:type="GstURIType">
+      <doc xml:whitespace="preserve">The different types of URI direction.</doc>
+      <member name="unknown" value="0" c:identifier="GST_URI_UNKNOWN"/>
+      <member name="sink" value="1" c:identifier="GST_URI_SINK"/>
+      <member name="src" value="2" c:identifier="GST_URI_SRC"/>
+    </enumeration>
+    <constant name="USECOND" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="VALUE_EQUAL" value="0">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="VALUE_GREATER_THAN" value="1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="VALUE_LESS_THAN" value="-1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="VALUE_UNORDERED" value="2">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <callback name="ValueCompareFunc" c:type="GstValueCompareFunc">
+      <doc xml:whitespace="preserve">Used together with gst_value_compare() to compare #GValue items.
+or GST_VALUE_UNORDERED</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">one of GST_VALUE_LESS_THAN, GST_VALUE_EQUAL, GST_VALUE_GREATER_THAN</doc>
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">first value for comparison</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">second value for comparison</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ValueDeserializeFunc" c:type="GstValueDeserializeFunc">
+      <doc xml:whitespace="preserve">Used by gst_value_deserialize() to parse a non-binary form into the #GValue.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE for success</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ValueIntersectFunc" c:type="GstValueIntersectFunc">
+      <doc xml:whitespace="preserve">Used by gst_value_intersect() to perform intersection for a specific #GValue
+type. If the intersection is non-empty, the result is
+placed in @dest and TRUE is returned.  If the intersection is
+empty, @dest is unmodified and FALSE is returned.
+Register a new implementation with gst_value_register_intersect_func().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the values can intersect</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue for the result</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue operand</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue operand</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ValueSerializeFunc" c:type="GstValueSerializeFunc">
+      <doc xml:whitespace="preserve">Used by gst_value_serialize() to obtain a non-binary form of the #GValue.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">the string representation of the value</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ValueSubtractFunc" c:type="GstValueSubtractFunc">
+      <doc xml:whitespace="preserve">Used by gst_value_subtract() to perform subtraction for a specific #GValue
+type. Register a new implementation with gst_value_register_subtract_func().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the subtraction is not empty</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue for the result</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="minuend" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue operand</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="subtrahend" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue operand</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="ValueTable" c:type="GstValueTable">
+      <doc xml:whitespace="preserve">VTable for the #GValue @type.</doc>
+      <field name="type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="compare" writable="1">
+        <type name="ValueCompareFunc" c:type="GstValueCompareFunc"/>
+      </field>
+      <field name="serialize" writable="1">
+        <type name="ValueSerializeFunc" c:type="GstValueSerializeFunc"/>
+      </field>
+      <field name="deserialize" writable="1">
+        <type name="ValueDeserializeFunc" c:type="GstValueDeserializeFunc"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="void*"/>
+        </array>
+      </field>
+    </record>
+    <callback name="ValueUnionFunc" c:type="GstValueUnionFunc">
+      <doc xml:whitespace="preserve">Used by gst_value_union() to perform unification for a specific #GValue
+type. Register a new implementation with gst_value_register_union_func().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if a union was successful</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue for the result</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue operand</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue operand</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="XML"
+           c:symbol-prefix="xml"
+           c:type="GstXML"
+           parent="Object"
+           glib:type-name="GstXML"
+           glib:get-type="gst_xml_get_type"
+           glib:type-struct="XMLClass">
+      <doc xml:whitespace="preserve">GStreamer pipelines can be saved to xml files using gst_xml_write_file().
+They can be loaded back using gst_xml_parse_doc() / gst_xml_parse_file() / 
+gst_xml_parse_memory().
+Additionally one can load saved pipelines into the gst-editor to inspect the
+graph.
+#GstElement implementations need to override the #GstObjectClass.save_thyself()
+and #GstObjectClass.restore_thyself() virtual functions of #GstObject.
+broken for all but the most simple pipelines. It will most likely be
+removed in future. Don't use it.</doc>
+      <constructor name="new" c:identifier="gst_xml_new">
+        <doc xml:whitespace="preserve">Create a new GstXML parser object.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a pointer to a new GstXML object.</doc>
+          <type name="XML" c:type="GstXML*"/>
+        </return-value>
+      </constructor>
+      <function name="make_element"
+                c:identifier="gst_xml_make_element"
+                introspectable="0">
+        <doc xml:whitespace="preserve">Load the element from the XML description</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the new element</doc>
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cur" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the xml node</doc>
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+          <parameter name="parent" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the parent of this object when it's loaded</doc>
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="write" c:identifier="gst_xml_write" introspectable="0">
+        <doc xml:whitespace="preserve">Converts the given element into an XML presentation.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a pointer to an XML document</doc>
+          <type name="libxml2.DocPtr" c:type="xmlDocPtr"/>
+        </return-value>
+        <parameters>
+          <parameter name="element" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The element to write out</doc>
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="write_file" c:identifier="gst_xml_write_file">
+        <doc xml:whitespace="preserve">Converts the given element into XML and writes the formatted XML to an open
+file.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of bytes written on success, -1 otherwise.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="element" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The element to write out</doc>
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter name="out" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an open file, like stdout</doc>
+            <type name="gpointer" c:type="FILE*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="object_loaded">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="self" transfer-ownership="none">
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="object_saved">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="self" transfer-ownership="none">
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_element"
+              c:identifier="gst_xml_get_element"
+              introspectable="0">
+        <doc xml:whitespace="preserve">This function is used to get a pointer to the GstElement corresponding
+to name in the pipeline description. You would use this if you have
+to do anything to the element after loading.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a pointer to a new GstElement, caller owns returned reference.</doc>
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The name of element to retrieve</doc>
+            <type name="guint8" c:type="guchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_topelements"
+              c:identifier="gst_xml_get_topelements"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Retrieve a list of toplevel elements.
+of the list and must not free or modify the list. The caller also does not
+own a reference to any of the elements in the list and should obtain its own
+reference using gst_object_ref() if necessary.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a GList of top-level elements. The caller does not own a copy</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="parse_doc" c:identifier="gst_xml_parse_doc">
+        <doc xml:whitespace="preserve">Fills the GstXML object with the elements from the
+xmlDocPtr.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE on success, FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="doc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to an xml document to parse</doc>
+            <type name="libxml2.DocPtr" c:type="xmlDocPtr"/>
+          </parameter>
+          <parameter name="root" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The name of the root object to build</doc>
+            <type name="guint8" c:type="guchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_file" c:identifier="gst_xml_parse_file">
+        <doc xml:whitespace="preserve">Fills the GstXML object with the corresponding elements from
+the XML file fname. Optionally it will only build the element from
+the element node root (if it is not NULL). This feature is useful
+if you only want to build a specific element from an XML file
+but not the pipeline it is embedded in.
+Pass "-" as fname to read from stdin. You can also pass a URI
+of any format that libxml supports, including http.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE on success, FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fname" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The filename with the xml description</doc>
+            <type name="guint8" c:type="guchar*"/>
+          </parameter>
+          <parameter name="root" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The name of the root object to build</doc>
+            <type name="guint8" c:type="guchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_memory" c:identifier="gst_xml_parse_memory">
+        <doc xml:whitespace="preserve">Fills the GstXML object with the corresponding elements from
+an in memory XML buffer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE on success</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to the in memory XML buffer</doc>
+            <type name="guint8" c:type="guchar*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the size of the buffer</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="root" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the root objects to build</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="topelements">
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="ns">
+        <type name="libxml2.NsPtr" c:type="xmlNsPtr"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+      <glib:signal name="object-loaded">
+        <doc xml:whitespace="preserve">Signals that a new object has been deserialized.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the object that has been loaded</doc>
+            <type name="Object"/>
+          </parameter>
+          <parameter name="xml_node" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the related xml_node pointer to the document tree</doc>
+            <type name="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="XMLClass"
+            c:type="GstXMLClass"
+            glib:is-gtype-struct-for="XML">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="object_loaded">
+        <callback name="object_loaded">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="xml" transfer-ownership="none">
+              <type name="XML" c:type="GstXML*"/>
+            </parameter>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+            <parameter name="self" transfer-ownership="none">
+              <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="object_saved">
+        <callback name="object_saved">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="xml" transfer-ownership="none">
+              <type name="XML" c:type="GstXML*"/>
+            </parameter>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+            <parameter name="self" transfer-ownership="none">
+              <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <function name="alloc_trace_available"
+              c:identifier="gst_alloc_trace_available">
+      <doc xml:whitespace="preserve">Check if alloc tracing was compiled into the core
+tracing enabled.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if the core was compiled with alloc</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="alloc_trace_get"
+              c:identifier="gst_alloc_trace_get"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Get the named alloc trace object.
+no alloc tracer was registered with that name.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a GstAllocTrace with the given name or NULL when</doc>
+        <type name="AllocTrace" c:type="GstAllocTrace*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the alloc trace object</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="alloc_trace_list" c:identifier="gst_alloc_trace_list">
+      <doc xml:whitespace="preserve">Get a list of all registered alloc trace objects.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a GList of GstAllocTrace objects.</doc>
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+    </function>
+    <function name="alloc_trace_live_all"
+              c:identifier="gst_alloc_trace_live_all">
+      <doc xml:whitespace="preserve">Get the total number of live registered alloc trace objects.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the total number of live registered alloc trace objects.</doc>
+        <type name="gint" c:type="int"/>
+      </return-value>
+    </function>
+    <function name="alloc_trace_print_all"
+              c:identifier="gst_alloc_trace_print_all">
+      <doc xml:whitespace="preserve">Print the status of all registered alloc trace objects.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="alloc_trace_print_live"
+              c:identifier="gst_alloc_trace_print_live">
+      <doc xml:whitespace="preserve">Print the status of all registered alloc trace objects, ignoring those
+without live objects.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="alloc_trace_set_flags_all"
+              c:identifier="gst_alloc_trace_set_flags_all">
+      <doc xml:whitespace="preserve">Enable the specified options on all registered alloc trace
+objects.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the options to enable</doc>
+          <type name="AllocTraceFlags" c:type="GstAllocTraceFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="atomic_int_set"
+              c:identifier="gst_atomic_int_set"
+              deprecated="Use g_atomic_int_set().">
+      <doc xml:whitespace="preserve">Unconditionally sets the atomic integer to @value.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="atomic_int"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">pointer to an atomic integer</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">value to set</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="atomic_queue_new"
+              c:identifier="gst_atomic_queue_new"
+              version="0.10.33"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new atomic queue instance. @initial_size will be rounded up to the
+nearest power of 2 and used as the initial size of the queue.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a new #GstAtomicQueue</doc>
+        <type name="AtomicQueue" c:type="GstAtomicQueue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="initial_size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">initial queue size</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="caps_from_string" c:identifier="gst_caps_from_string">
+      <doc xml:whitespace="preserve">Converts @caps from a string representation.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a newly allocated #GstCaps</doc>
+        <type name="Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string to convert to #GstCaps</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="caps_load_thyself" c:identifier="gst_caps_load_thyself">
+      <doc xml:whitespace="preserve">Creates a #GstCaps from its XML serialization.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new #GstCaps structure</doc>
+        <type name="Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a XML node</doc>
+          <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="caps_replace" c:identifier="gst_caps_replace">
+      <doc xml:whitespace="preserve">Replaces *caps with @newcaps.  Unrefs the #GstCaps in the location
+pointed to by @caps, if applicable, then modifies @caps to point to
+This function does not take any locks so you might want to lock
+the object owning @caps pointer.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="caps"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">a pointer to #GstCaps</doc>
+          <type name="Caps" c:type="GstCaps**"/>
+        </parameter>
+        <parameter name="newcaps" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GstCaps to replace *caps</doc>
+          <type name="Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="child_proxy_child_added"
+              c:identifier="gst_child_proxy_child_added">
+      <doc xml:whitespace="preserve">Emits the "child-added" signal.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the parent object</doc>
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="child" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the newly added child</doc>
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="child_proxy_child_removed"
+              c:identifier="gst_child_proxy_child_removed">
+      <doc xml:whitespace="preserve">Emits the "child-removed" signal.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the parent object</doc>
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="child" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the removed child</doc>
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="child_proxy_get"
+              c:identifier="gst_child_proxy_get"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Gets properties of the parent object and its children.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the parent object</doc>
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="first_property_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">name of the first property to get</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="child_proxy_get_property"
+              c:identifier="gst_child_proxy_get_property">
+      <doc xml:whitespace="preserve">Gets a single property using the GstChildProxy mechanism.
+You are responsible for for freeing it by calling g_value_unset()</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">object to query</doc>
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">name of the property</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="value"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue that should take the result.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="child_proxy_get_valist"
+              c:identifier="gst_child_proxy_get_valist"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Gets properties of the parent object and its children.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the object to query</doc>
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="first_property_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">name of the first property to get</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="var_args" transfer-ownership="none">
+          <doc xml:whitespace="preserve">return location for the first property, followed optionally by more name/return location pairs, followed by NULL</doc>
+          <type name="va_list" c:type="va_list"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="child_proxy_lookup" c:identifier="gst_child_proxy_lookup">
+      <doc xml:whitespace="preserve">Looks up which object and #GParamSpec would be effected by the given @name.
+case the values for @pspec and @target are not modified. Unref @target after
+usage.
+MT safe.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if @target and @pspec could be found. FALSE otherwise. In that</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">object to lookup the property in</doc>
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">name of the property to look up</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="target"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">pointer to a #GstObject that takes the real object to set property on</doc>
+          <type name="Object" c:type="GstObject**"/>
+        </parameter>
+        <parameter name="pspec"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">pointer to take the #GParamSpec describing the property</doc>
+          <type name="GObject.ParamSpec" c:type="GParamSpec**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="child_proxy_set"
+              c:identifier="gst_child_proxy_set"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Sets properties of the parent object and its children.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the parent object</doc>
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="first_property_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">name of the first property to set</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="child_proxy_set_property"
+              c:identifier="gst_child_proxy_set_property">
+      <doc xml:whitespace="preserve">Sets a single property using the GstChildProxy mechanism.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the parent object</doc>
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">name of the property to set</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">new #GValue for the property</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="child_proxy_set_valist"
+              c:identifier="gst_child_proxy_set_valist"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Sets properties of the parent object and its children.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the parent object</doc>
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="first_property_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">name of the first property to set</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="var_args" transfer-ownership="none">
+          <doc xml:whitespace="preserve">value for the first property, followed optionally by more name/value pairs, followed by NULL</doc>
+          <type name="va_list" c:type="va_list"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="class_signal_connect"
+              c:identifier="gst_class_signal_connect">
+      <doc xml:whitespace="preserve">Connect to a class signal.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the signal id.</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="klass" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GstObjectClass to attach the signal to</doc>
+          <type name="ObjectClass" c:type="GstObjectClass*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the signal to attach to</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the signal function</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="func_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to user data</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="class_signal_emit_by_name"
+              c:identifier="gst_class_signal_emit_by_name">
+      <doc xml:whitespace="preserve">emits the named class signal.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GstObject that emits the signal</doc>
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the signal to emit</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="self" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data for the signal</doc>
+          <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="core_error_quark" c:identifier="gst_core_error_quark">
+      <return-value transfer-ownership="none">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="debug_add_log_function"
+              c:identifier="gst_debug_add_log_function"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Adds the logging function to the list of logging functions.
+Be sure to use #G_GNUC_NO_INSTRUMENT on that function, it is needed.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="func" transfer-ownership="none" closure="1">
+          <doc xml:whitespace="preserve">the function to use</doc>
+          <type name="LogFunction" c:type="GstLogFunction"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">user data</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_construct_term_color"
+              c:identifier="gst_debug_construct_term_color">
+      <doc xml:whitespace="preserve">Constructs a string that can be used for getting the desired color in color
+terminals.
+You need to free the string after use.
+definition</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a string containing the color</doc>
+        <type name="utf8"/>
+      </return-value>
+      <parameters>
+        <parameter name="colorinfo" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the color info</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_construct_win_color"
+              c:identifier="gst_debug_construct_win_color"
+              version="0.10.23">
+      <doc xml:whitespace="preserve">Constructs an integer that can be used for getting the desired color in
+windows' terminals (cmd.exe). As there is no mean to underline, we simply
+ignore this attribute.
+This function returns 0 on non-windows machines.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">an integer containing the color definition</doc>
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="colorinfo" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the color info</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_get_all_categories"
+              c:identifier="gst_debug_get_all_categories">
+      <doc xml:whitespace="preserve">Returns a snapshot of a all categories that are currently in use . This list
+may change anytime.
+The caller has to free the list after use.
+debug categories</doc>
+      <return-value transfer-ownership="container">
+        <doc xml:whitespace="preserve">the list of</doc>
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="DebugCategory"/>
+        </type>
+      </return-value>
+    </function>
+    <function name="debug_get_default_threshold"
+              c:identifier="gst_debug_get_default_threshold">
+      <doc xml:whitespace="preserve">Returns the default threshold that is used for new categories.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the default threshold level</doc>
+        <type name="DebugLevel" c:type="GstDebugLevel"/>
+      </return-value>
+    </function>
+    <function name="debug_is_active" c:identifier="gst_debug_is_active">
+      <doc xml:whitespace="preserve">Checks if debugging output is activated.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE, if debugging is activated</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="debug_is_colored" c:identifier="gst_debug_is_colored">
+      <doc xml:whitespace="preserve">Checks if the debugging output should be colored.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE, if the debug output should be colored.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="debug_level_get_name"
+              c:identifier="gst_debug_level_get_name">
+      <doc xml:whitespace="preserve">Get the string representation of a debugging level</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the name</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="level" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the level to get the name for</doc>
+          <type name="DebugLevel" c:type="GstDebugLevel"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_log" c:identifier="gst_debug_log" introspectable="0">
+      <doc xml:whitespace="preserve">Logs the given message using the currently registered debugging handlers.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="category" transfer-ownership="none">
+          <doc xml:whitespace="preserve">category to log</doc>
+          <type name="DebugCategory" c:type="GstDebugCategory*"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <doc xml:whitespace="preserve">level of the message is in</doc>
+          <type name="DebugLevel" c:type="GstDebugLevel"/>
+        </parameter>
+        <parameter name="file" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the file that emitted the message, usually the __FILE__ identifier</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="function" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the function that emitted the message</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="line" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the line from that the message was emitted, usually __LINE__</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="object" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">the object this message relates to, or NULL if none</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a printf style format string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_log_default" c:identifier="gst_debug_log_default">
+      <doc xml:whitespace="preserve">The default logging handler used by GStreamer. Logging functions get called
+whenever a macro like GST_DEBUG or similar is used. This function outputs the
+message and additional info to stderr (or the log file specified via the
+GST_DEBUG_FILE environment variable).
+You can add other handlers by using gst_debug_add_log_function().
+And you can remove this handler by calling
+gst_debug_remove_log_function(gst_debug_log_default);</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="category" transfer-ownership="none">
+          <doc xml:whitespace="preserve">category to log</doc>
+          <type name="DebugCategory" c:type="GstDebugCategory*"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <doc xml:whitespace="preserve">level of the message</doc>
+          <type name="DebugLevel" c:type="GstDebugLevel"/>
+        </parameter>
+        <parameter name="file" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the file that emitted the message, usually the __FILE__ identifier</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="function" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the function that emitted the message</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="line" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the line from that the message was emitted, usually __LINE__</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="object" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">the object this message relates to, or NULL if none</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="message" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the actual message</doc>
+          <type name="DebugMessage" c:type="GstDebugMessage*"/>
+        </parameter>
+        <parameter name="unused" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an unused variable, reserved for some user_data.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_log_valist"
+              c:identifier="gst_debug_log_valist"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Logs the given message using the currently registered debugging handlers.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="category" transfer-ownership="none">
+          <doc xml:whitespace="preserve">category to log</doc>
+          <type name="DebugCategory" c:type="GstDebugCategory*"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <doc xml:whitespace="preserve">level of the message is in</doc>
+          <type name="DebugLevel" c:type="GstDebugLevel"/>
+        </parameter>
+        <parameter name="file" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the file that emitted the message, usually the __FILE__ identifier</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="function" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the function that emitted the message</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="line" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the line from that the message was emitted, usually __LINE__</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="object" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">the object this message relates to, or NULL if none</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a printf style format string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="args" transfer-ownership="none">
+          <doc xml:whitespace="preserve">optional arguments for the format</doc>
+          <type name="va_list" c:type="va_list"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_print_stack_trace"
+              c:identifier="gst_debug_print_stack_trace">
+      <doc xml:whitespace="preserve">If GST_ENABLE_FUNC_INSTRUMENTATION is defined a stacktrace is available for
+gstreamer code, which can be printed with this function.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="debug_remove_log_function"
+              c:identifier="gst_debug_remove_log_function"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Removes all registered instances of the given logging functions.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">How many instances of the function were removed</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="func" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the log function to remove</doc>
+          <type name="LogFunction" c:type="GstLogFunction"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_remove_log_function_by_data"
+              c:identifier="gst_debug_remove_log_function_by_data">
+      <doc xml:whitespace="preserve">Removes all registered instances of log functions with the given user data.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">How many instances of the function were removed</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">user data of the log function to remove</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_set_active" c:identifier="gst_debug_set_active">
+      <doc xml:whitespace="preserve">If activated, debugging messages are sent to the debugging
+handlers.
+It makes sense to deactivate it for speed issues.
+&lt;note&gt;&lt;para&gt;This function is not threadsafe. It makes sense to only call it
+during initialization.&lt;/para&gt;&lt;/note&gt;</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="active" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Whether to use debugging output or not</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_set_colored" c:identifier="gst_debug_set_colored">
+      <doc xml:whitespace="preserve">Sets or unsets the use of coloured debugging output.
+This function may be called before gst_init().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="colored" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Whether to use colored output or not</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_set_default_threshold"
+              c:identifier="gst_debug_set_default_threshold">
+      <doc xml:whitespace="preserve">Sets the default threshold to the given level and updates all categories to
+use this threshold.
+This function may be called before gst_init().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="level" transfer-ownership="none">
+          <doc xml:whitespace="preserve">level to set</doc>
+          <type name="DebugLevel" c:type="GstDebugLevel"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_set_threshold_for_name"
+              c:identifier="gst_debug_set_threshold_for_name">
+      <doc xml:whitespace="preserve">Sets all categories which match the given glob style pattern to the given
+level.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">name of the categories to set</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <doc xml:whitespace="preserve">level to set them to</doc>
+          <type name="DebugLevel" c:type="GstDebugLevel"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_unset_threshold_for_name"
+              c:identifier="gst_debug_unset_threshold_for_name">
+      <doc xml:whitespace="preserve">Resets all categories with the given name back to the default level.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">name of the categories to set</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="default_registry_check_feature_version"
+              c:identifier="gst_default_registry_check_feature_version">
+      <doc xml:whitespace="preserve">Checks whether a plugin feature by the given name exists in the
+default registry and whether its version is at least the
+version required.
+the same as the required version or newer, and #FALSE otherwise.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">#TRUE if the feature could be found and the version is</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="feature_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the feature (e.g. "oggdemux")</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="min_major" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the minimum major version number</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="min_minor" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the minimum minor version number</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="min_micro" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the minimum micro version number</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="deinit" c:identifier="gst_deinit">
+      <doc xml:whitespace="preserve">Clean up any resources created by GStreamer in gst_init().
+It is normally not needed to call this function in a normal application
+as the resources will automatically be freed when the program terminates.
+This function is therefore mostly used by testsuites and other memory
+profiling tools.
+After this call GStreamer (including this method) should not be used anymore.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="double_range_get_type"
+              c:identifier="gst_double_range_get_type">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="error_get_message" c:identifier="gst_error_get_message">
+      <doc xml:whitespace="preserve">Get a string describing the error message in the current locale.
+the error message (in UTF-8 encoding)</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a newly allocated string describing</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="domain" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the GStreamer error domain this error belongs to.</doc>
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="code" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the error code belonging to the domain.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="filename_to_uri"
+              c:identifier="gst_filename_to_uri"
+              version="0.10.33"
+              throws="1">
+      <doc xml:whitespace="preserve">Similar to g_filename_to_uri(), but attempts to handle relative file paths
+as well. Before converting @filename into an URI, it will be prefixed by
+the current working directory if it is a relative path, and then the path
+will be canonicalised so that it doesn't contain any './' or '../' segments.
+On Windows #filename should be in UTF-8 encoding.</doc>
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="filename" transfer-ownership="none">
+          <doc xml:whitespace="preserve">absolute or relative file name path</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="filter_run" c:identifier="gst_filter_run">
+      <doc xml:whitespace="preserve">Iterates over the elements in @list, calling @func with the
+list item data for each item.  If @func returns TRUE, @data is
+prepended to the list of results returned.  If @first is true,
+the search is halted after the first result is found.
+Since gst_filter_run() knows nothing about the type of @data, no
+reference will be taken (if @data refers to an object) and no copy of
+results.
+when no longer needed (the data contained in the list is a flat copy
+and does need to be unreferenced or freed).</doc>
+      <return-value transfer-ownership="container">
+        <doc xml:whitespace="preserve">the list of results. Free with g_list_free()</doc>
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a linked list</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="3">
+          <doc xml:whitespace="preserve">the function to execute for each item</doc>
+          <type name="FilterFunc" c:type="GstFilterFunc"/>
+        </parameter>
+        <parameter name="first" transfer-ownership="none">
+          <doc xml:whitespace="preserve">flag to stop execution after a successful item</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">user data</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="flow_get_name" c:identifier="gst_flow_get_name">
+      <doc xml:whitespace="preserve">Gets a string representing the given flow return.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a static string with the name of the flow return.</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="ret" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GstFlowReturn to get the name of.</doc>
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="flow_to_quark" c:identifier="gst_flow_to_quark">
+      <doc xml:whitespace="preserve">Get the unique quark for the given GstFlowReturn.
+invalid return was specified.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the quark associated with the flow return or 0 if an</doc>
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+      <parameters>
+        <parameter name="ret" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GstFlowReturn to get the quark of.</doc>
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_get_by_nick" c:identifier="gst_format_get_by_nick">
+      <doc xml:whitespace="preserve">Return the format registered with the given nick.
+if the format was not registered.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The format with @nick or GST_FORMAT_UNDEFINED</doc>
+        <type name="Format" c:type="GstFormat"/>
+      </return-value>
+      <parameters>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The nick of the format</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_get_details" c:identifier="gst_format_get_details">
+      <doc xml:whitespace="preserve">Get details about the given format.
+MT safe.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The #GstFormatDefinition for @format or NULL on failure.</doc>
+        <type name="FormatDefinition" c:type="GstFormatDefinition*"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The format to get details of</doc>
+          <type name="Format" c:type="GstFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_get_name" c:identifier="gst_format_get_name">
+      <doc xml:whitespace="preserve">Get a printable name for the given format. Do not modify or free.
+the format is unknown.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a reference to the static name of the format or NULL if</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GstFormat</doc>
+          <type name="Format" c:type="GstFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_iterate_definitions"
+              c:identifier="gst_format_iterate_definitions"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Iterate all the registered formats. The format definition is read
+only.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a GstIterator of #GstFormatDefinition.</doc>
+        <type name="Iterator" c:type="GstIterator*"/>
+      </return-value>
+    </function>
+    <function name="format_register" c:identifier="gst_format_register">
+      <doc xml:whitespace="preserve">Create a new GstFormat based on the nick or return an
+already registered format with that nick.
+with the same nick.
+MT safe.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">A new GstFormat or an already registered format</doc>
+        <type name="Format" c:type="GstFormat"/>
+      </return-value>
+      <parameters>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The nick of the new format</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="description" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The description of the new format</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_to_quark" c:identifier="gst_format_to_quark">
+      <doc xml:whitespace="preserve">Get the unique quark for the given format.
+is unknown.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the quark associated with the format or 0 if the format</doc>
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GstFormat</doc>
+          <type name="Format" c:type="GstFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="formats_contains" c:identifier="gst_formats_contains">
+      <doc xml:whitespace="preserve">See if the given format is inside the format array.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if the format is found inside the array</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="formats" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The format array to search</doc>
+          <type name="Format" c:type="GstFormat*"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the format to find</doc>
+          <type name="Format" c:type="GstFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fourcc_get_type" c:identifier="gst_fourcc_get_type">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="fraction_get_type" c:identifier="gst_fraction_get_type">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="fraction_range_get_type"
+              c:identifier="gst_fraction_range_get_type">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="implements_interface_cast"
+              c:identifier="gst_implements_interface_cast">
+      <doc xml:whitespace="preserve">cast a given object to an interface type, and check whether this
+interface is supported for this specific instance.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">a gpointer to the interface type</doc>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="from" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the object (any sort) from which to cast to the interface</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the interface type to cast to</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="implements_interface_check"
+              c:identifier="gst_implements_interface_check">
+      <doc xml:whitespace="preserve">check a given object for an interface implementation, and check
+whether this interface is supported for this specific instance.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">whether or not the object implements the given interface</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="from" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the object (any sort) from which to check from for the interface</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the interface type to check for</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="init" c:identifier="gst_init">
+      <doc xml:whitespace="preserve">Initializes the GStreamer library, setting up internal path lists,
+registering built-in elements, and loading standard plugins.
+Unless the plugin registry is disabled at compile time, the registry will be
+loaded. By default this will also check if the registry cache needs to be
+updated and rescan all plugins if needed. See gst_update_registry() for
+details and section
+&lt;link linkend="gst-running"&gt;Running GStreamer Applications&lt;/link&gt;
+for how to disable automatic registry updates.
+This function should be called before calling any other GLib functions. If
+this is not an option, your program must initialise the GLib thread system
+using g_thread_init() before any other GLib functions are called.
+&lt;note&gt;&lt;para&gt;
+This function will terminate your program if it was unable to initialize
+GStreamer for some reason.  If you want your program to fall back,
+use gst_init_check() instead.
+&lt;/para&gt;&lt;/note&gt;
+functions in other glib-style libraries, such as gtk_init().  In
+particular, unknown command line options cause this function to
+abort program execution.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">pointer to application's argc</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+        <parameter name="argv"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">pointer to application's argv</doc>
+          <array length="0" c:type="char**">
+            <type name="utf8" c:type="char*"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="init_check" c:identifier="gst_init_check" throws="1">
+      <doc xml:whitespace="preserve">Initializes the GStreamer library, setting up internal path lists,
+registering built-in elements, and loading standard plugins.
+This function will return %FALSE if GStreamer could not be initialized
+for some reason.  If you want your program to fail fatally,
+use gst_init() instead.
+This function should be called before calling any other GLib functions. If
+this is not an option, your program must initialise the GLib thread system
+using g_thread_init() before any other GLib functions are called.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if GStreamer could be initialized.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">pointer to application's argc</doc>
+          <type name="gint" c:type="int*"/>
+        </parameter>
+        <parameter name="argv"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">pointer to application's argv</doc>
+          <array length="0" c:type="char**">
+            <type name="utf8" c:type="char*"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="init_get_option_group"
+              c:identifier="gst_init_get_option_group"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Returns a #GOptionGroup with GStreamer's argument specifications. The
+group is set up to use standard GOption callbacks, so when using this
+group in combination with GOption parsing methods, all argument parsing
+and initialization is automated.
+This function is useful if you want to integrate GStreamer with other
+libraries that use GOption (see g_option_context_add_group() ).
+If you use this function, you should make sure you initialise the GLib
+threading system as one of the very first things in your program
+(see the example at the beginning of this section).</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a pointer to GStreamer's option group.</doc>
+        <type name="GLib.OptionGroup" c:type="GOptionGroup*"/>
+      </return-value>
+    </function>
+    <function name="int64_range_get_type"
+              c:identifier="gst_int64_range_get_type">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="int_range_get_type" c:identifier="gst_int_range_get_type">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="is_initialized"
+              c:identifier="gst_is_initialized"
+              version="0.10.31">
+      <doc xml:whitespace="preserve">Use this function to check if GStreamer has been initialized with gst_init()
+or gst_init_check().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if initialization has been done, FALSE otherwise.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="is_tag_list" c:identifier="gst_is_tag_list">
+      <doc xml:whitespace="preserve">Checks if the given pointer is a taglist.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE, if the given pointer is a taglist</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="p" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Object that might be a taglist</doc>
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="iterator_new"
+              c:identifier="gst_iterator_new"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new iterator. This function is mainly used for objects
+implementing the next/resync/free function to iterate a data structure.
+For each item retrieved, the @item function is called with the lock
+held. The @free function is called when the iterator is freed.
+MT safe.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the new #GstIterator.</doc>
+        <type name="Iterator" c:type="GstIterator*"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the size of the iterator structure</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#GType of children</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="lock" transfer-ownership="none">
+          <doc xml:whitespace="preserve">pointer to a #GMutex.</doc>
+          <type name="GLib.Mutex" c:type="GMutex*"/>
+        </parameter>
+        <parameter name="master_cookie" transfer-ownership="none">
+          <doc xml:whitespace="preserve">pointer to a guint32 that is changed when the items in the iterator changed.</doc>
+          <type name="guint32" c:type="guint32*"/>
+        </parameter>
+        <parameter name="next" transfer-ownership="none">
+          <doc xml:whitespace="preserve">function to get next item</doc>
+          <type name="IteratorNextFunction" c:type="GstIteratorNextFunction"/>
+        </parameter>
+        <parameter name="item" transfer-ownership="none">
+          <doc xml:whitespace="preserve">function to call on each item retrieved</doc>
+          <type name="IteratorItemFunction" c:type="GstIteratorItemFunction"/>
+        </parameter>
+        <parameter name="resync" transfer-ownership="none">
+          <doc xml:whitespace="preserve">function to resync the iterator</doc>
+          <type name="IteratorResyncFunction"
+                c:type="GstIteratorResyncFunction"/>
+        </parameter>
+        <parameter name="free" transfer-ownership="none">
+          <doc xml:whitespace="preserve">function to free the iterator</doc>
+          <type name="IteratorFreeFunction" c:type="GstIteratorFreeFunction"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="iterator_new_list"
+              c:identifier="gst_iterator_new_list"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new iterator designed for iterating @list.
+The list you iterate is usually part of a data structure @owner and is
+protected with @lock. 
+The iterator will use @lock to retrieve the next item of the list and it
+will then call the @item function before releasing @lock again.
+The @item function usualy makes sure that the item remains alive while
+responsible for freeing/unreffing the item after usage as explained in
+gst_iterator_next().
+When a concurrent update to the list is performed, usually by @owner while
+holding @lock, @master_cookie will be updated. The iterator implementation
+will notice the update of the cookie and will return %GST_ITERATOR_RESYNC to
+the user of the iterator in the next call to gst_iterator_next().
+MT safe.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the new #GstIterator for @list.</doc>
+        <type name="Iterator" c:type="GstIterator*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#GType of elements</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="lock" transfer-ownership="none">
+          <doc xml:whitespace="preserve">pointer to a #GMutex protecting the list.</doc>
+          <type name="GLib.Mutex" c:type="GMutex*"/>
+        </parameter>
+        <parameter name="master_cookie" transfer-ownership="none">
+          <doc xml:whitespace="preserve">pointer to a guint32 that is incremented when the list is changed.</doc>
+          <type name="guint32" c:type="guint32*"/>
+        </parameter>
+        <parameter name="list" transfer-ownership="none">
+          <doc xml:whitespace="preserve">pointer to the list</doc>
+          <type name="GLib.List" c:type="GList**">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+        <parameter name="owner" transfer-ownership="none">
+          <doc xml:whitespace="preserve">object owning the list</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="item" transfer-ownership="none">
+          <doc xml:whitespace="preserve">function to call for each item</doc>
+          <type name="IteratorItemFunction" c:type="GstIteratorItemFunction"/>
+        </parameter>
+        <parameter name="free" transfer-ownership="none">
+          <doc xml:whitespace="preserve">function to call when the iterator is freed</doc>
+          <type name="IteratorDisposeFunction"
+                c:type="GstIteratorDisposeFunction"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="iterator_new_single"
+              c:identifier="gst_iterator_new_single"
+              version="0.10.25"
+              introspectable="0">
+      <doc xml:whitespace="preserve">This #GstIterator is a convenient iterator for the common
+case where a #GstIterator needs to be returned but only
+a single object has to be considered. This happens often
+for the #GstPadIterIntLinkFunction.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the new #GstIterator for @object.</doc>
+        <type name="Iterator" c:type="GstIterator*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#GType of the passed object</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">object that this iterator should return</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="copy" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Function that returns a copy of @object or increases its refcount</doc>
+          <type name="CopyFunction" c:type="GstCopyFunction"/>
+        </parameter>
+        <parameter name="free" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Function to be called for freeing @object</doc>
+          <type name="GLib.FreeFunc" c:type="GFreeFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="library_error_quark"
+              c:identifier="gst_library_error_quark">
+      <return-value transfer-ownership="none">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="param_spec_mini_object"
+              c:identifier="gst_param_spec_mini_object"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new #GParamSpec instance that hold #GstMiniObject references.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a newly allocated #GParamSpec instance</doc>
+        <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the canonical name of the property</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the nickname of the property</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a short description of the property</doc>
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="object_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstMiniObject #GType for the property</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a combination of #GParamFlags</doc>
+          <type name="GObject.ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_mini_object_get_type"
+              c:identifier="gst_param_spec_mini_object_get_type">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="parse_bin_from_description"
+              c:identifier="gst_parse_bin_from_description"
+              version="0.10.3"
+              throws="1">
+      <doc xml:whitespace="preserve">This is a convenience wrapper around gst_parse_launch() to create a
+#GstBin from a gst-launch-style pipeline description. See
+gst_parse_launch() and the gst-launch man page for details about the
+syntax. Ghost pads on the bin for unlinked source or sink pads
+within the bin can automatically be created (but only a maximum of
+one ghost pad for each direction will be created; if you expect
+multiple unlinked source pads or multiple unlinked sink pads
+and want them all ghosted, you will have to create the ghost pads
+yourself).</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a newly-created bin, or NULL if an error occurred.</doc>
+        <type name="Element" c:type="GstElement*"/>
+      </return-value>
+      <parameters>
+        <parameter name="bin_description" transfer-ownership="none">
+          <doc xml:whitespace="preserve">command line describing the bin</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="ghost_unlinked_pads" transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether to automatically create ghost pads for unlinked source or sink pads within the bin</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_bin_from_description_full"
+              c:identifier="gst_parse_bin_from_description_full"
+              version="0.10.20"
+              throws="1">
+      <doc xml:whitespace="preserve">This is a convenience wrapper around gst_parse_launch() to create a
+#GstBin from a gst-launch-style pipeline description. See
+gst_parse_launch() and the gst-launch man page for details about the
+syntax. Ghost pads on the bin for unlinked source or sink pads
+within the bin can automatically be created (but only a maximum of
+one ghost pad for each direction will be created; if you expect
+multiple unlinked source pads or multiple unlinked sink pads
+and want them all ghosted, you will have to create the ghost pads
+yourself).</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a newly-created bin, or NULL if an error occurred.</doc>
+        <type name="Element" c:type="GstElement*"/>
+      </return-value>
+      <parameters>
+        <parameter name="bin_description" transfer-ownership="none">
+          <doc xml:whitespace="preserve">command line describing the bin</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="ghost_unlinked_pads" transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether to automatically create ghost pads for unlinked source or sink pads within the bin</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="context" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a parse context allocated with gst_parse_context_new(), or %NULL</doc>
+          <type name="ParseContext" c:type="GstParseContext*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">parsing options, or #GST_PARSE_FLAG_NONE</doc>
+          <type name="ParseFlags" c:type="GstParseFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_error_quark" c:identifier="gst_parse_error_quark">
+      <doc xml:whitespace="preserve">Get the error quark used by the parsing subsystem.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the quark of the parse errors.</doc>
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="parse_launch" c:identifier="gst_parse_launch" throws="1">
+      <doc xml:whitespace="preserve">Create a new pipeline based on command line syntax.
+Please note that you might get a return value that is not %NULL even though
+the @error is set. In this case there was a recoverable parsing error and you
+can try to play the pipeline.
+more than one toplevel element is specified by the @pipeline_description,
+all elements are put into a #GstPipeline, which than is returned.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new element on success, %NULL on failure. If</doc>
+        <type name="Element" c:type="GstElement*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pipeline_description" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the command line describing the pipeline</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_launch_full"
+              c:identifier="gst_parse_launch_full"
+              version="0.10.20"
+              throws="1">
+      <doc xml:whitespace="preserve">Create a new pipeline based on command line syntax.
+Please note that you might get a return value that is not %NULL even though
+the @error is set. In this case there was a recoverable parsing error and you
+can try to play the pipeline.
+more than one toplevel element is specified by the @pipeline_description,
+all elements are put into a #GstPipeline, which then is returned.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new element on success, %NULL on failure. If</doc>
+        <type name="Element" c:type="GstElement*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pipeline_description" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the command line describing the pipeline</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="context" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a parse context allocated with gst_parse_context_new(), or %NULL</doc>
+          <type name="ParseContext" c:type="GstParseContext*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">parsing options, or #GST_PARSE_FLAG_NONE</doc>
+          <type name="ParseFlags" c:type="GstParseFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_launchv" c:identifier="gst_parse_launchv" throws="1">
+      <doc xml:whitespace="preserve">Create a new element based on command line syntax.
+An error does not mean that the pipeline could not be constructed.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new element on success and %NULL on failure.</doc>
+        <type name="Element" c:type="GstElement*"/>
+      </return-value>
+      <parameters>
+        <parameter name="argv" transfer-ownership="none">
+          <doc xml:whitespace="preserve">null-terminated array of arguments</doc>
+          <array c:type="gchar**">
+            <type name="utf8" c:type="gchar*"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_launchv_full"
+              c:identifier="gst_parse_launchv_full"
+              version="0.10.20"
+              throws="1">
+      <doc xml:whitespace="preserve">Create a new element based on command line syntax.
+An error does not mean that the pipeline could not be constructed.
+or a partially-constructed bin or element will be returned and @error will
+be set (unless you passed #GST_PARSE_FLAG_FATAL_ERRORS in @flags, then
+%NULL will always be returned on failure)</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new element on success; on failure, either %NULL</doc>
+        <type name="Element" c:type="GstElement*"/>
+      </return-value>
+      <parameters>
+        <parameter name="argv" transfer-ownership="none">
+          <doc xml:whitespace="preserve">null-terminated array of arguments</doc>
+          <array c:type="gchar**">
+            <type name="utf8" c:type="gchar*"/>
+          </array>
+        </parameter>
+        <parameter name="context" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">a parse context allocated with gst_parse_context_new(), or %NULL</doc>
+          <type name="ParseContext" c:type="GstParseContext*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">parsing options, or #GST_PARSE_FLAG_NONE</doc>
+          <type name="ParseFlags" c:type="GstParseFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="poll_new"
+              c:identifier="gst_poll_new"
+              version="0.10.18"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new file descriptor set. If @controllable, it
+is possible to restart or flush a call to gst_poll_wait() with
+gst_poll_restart() and gst_poll_set_flushing() respectively.
+Free with gst_poll_free().</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new #GstPoll, or %NULL in case of an error.</doc>
+        <type name="Poll" c:type="GstPoll*"/>
+      </return-value>
+      <parameters>
+        <parameter name="controllable" transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether it should be possible to control a wait.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="poll_new_timer"
+              c:identifier="gst_poll_new_timer"
+              version="0.10.23"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new poll object that can be used for scheduling cancellable
+timeouts.
+A timeout is performed with gst_poll_wait(). Multiple timeouts can be
+performed from different threads. 
+Free with gst_poll_free().</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new #GstPoll, or %NULL in case of an error.</doc>
+        <type name="Poll" c:type="GstPoll*"/>
+      </return-value>
+    </function>
+    <function name="print_element_args" c:identifier="gst_print_element_args">
+      <doc xml:whitespace="preserve">Print the element argument in a human readable format in the given
+GString.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buf" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the buffer to print the args in</doc>
+          <type name="GLib.String" c:type="GString*"/>
+        </parameter>
+        <parameter name="indent" transfer-ownership="none">
+          <doc xml:whitespace="preserve">initial indentation</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="element" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the element to print the args of</doc>
+          <type name="Element" c:type="GstElement*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="print_pad_caps" c:identifier="gst_print_pad_caps">
+      <doc xml:whitespace="preserve">Write the pad capabilities in a human readable format into
+the given GString.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buf" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the buffer to print the caps in</doc>
+          <type name="GLib.String" c:type="GString*"/>
+        </parameter>
+        <parameter name="indent" transfer-ownership="none">
+          <doc xml:whitespace="preserve">initial indentation</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="pad" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the pad to print the caps from</doc>
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="resource_error_quark"
+              c:identifier="gst_resource_error_quark">
+      <return-value transfer-ownership="none">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="segtrap_is_enabled"
+              c:identifier="gst_segtrap_is_enabled"
+              version="0.10.10">
+      <doc xml:whitespace="preserve">Some functions in the GStreamer core might install a custom SIGSEGV handler
+to better catch and report errors to the application. Currently this feature
+is enabled by default when loading plugins.
+Applications might want to disable this behaviour with the
+gst_segtrap_set_enabled() function. This is typically done if the application
+wants to install its own handler without GStreamer interfering.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if GStreamer is allowed to install a custom SIGSEGV handler.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="segtrap_set_enabled"
+              c:identifier="gst_segtrap_set_enabled"
+              version="0.10.10">
+      <doc xml:whitespace="preserve">Applications might want to disable/enable the SIGSEGV handling of
+the GStreamer core. See gst_segtrap_is_enabled() for more information.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="enabled" transfer-ownership="none">
+          <doc xml:whitespace="preserve">whether a custom SIGSEGV handler should be installed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="static_caps_get_type"
+              c:identifier="gst_static_caps_get_type">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="static_pad_template_get_type"
+              c:identifier="gst_static_pad_template_get_type">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="stream_error_quark" c:identifier="gst_stream_error_quark">
+      <return-value transfer-ownership="none">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+    </function>
+    <function name="structure_from_string"
+              c:identifier="gst_structure_from_string">
+      <doc xml:whitespace="preserve">Creates a #GstStructure from a string representation.
+If end is not NULL, a pointer to the place inside the given string
+where parsing ended will be returned.
+not be parsed. Free with gst_structure_free() after use.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new #GstStructure or NULL when the string could</doc>
+        <type name="Structure" c:type="GstStructure*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a string representation of a #GstStructure.</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="end"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">pointer to store the end of the string in.</doc>
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_exists" c:identifier="gst_tag_exists">
+      <doc xml:whitespace="preserve">Checks if the given type is already registered.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if the type is already registered</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="tag" transfer-ownership="none">
+          <doc xml:whitespace="preserve">name of the tag</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_get_description"
+              c:identifier="gst_tag_get_description">
+      <doc xml:whitespace="preserve">Returns the human-readable description of this tag, You must not change or
+free this string.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the human-readable description of this tag</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="tag" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the tag</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_get_flag" c:identifier="gst_tag_get_flag">
+      <doc xml:whitespace="preserve">Gets the flag of @tag.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the flag of this tag.</doc>
+        <type name="TagFlag" c:type="GstTagFlag"/>
+      </return-value>
+      <parameters>
+        <parameter name="tag" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the tag</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_get_nick" c:identifier="gst_tag_get_nick">
+      <doc xml:whitespace="preserve">Returns the human-readable name of this tag, You must not change or free
+this string.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the human-readable name of this tag</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="tag" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the tag</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_get_type" c:identifier="gst_tag_get_type">
+      <doc xml:whitespace="preserve">Gets the #GType used for this tag.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the #GType of this tag</doc>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="tag" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the tag</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_is_fixed" c:identifier="gst_tag_is_fixed">
+      <doc xml:whitespace="preserve">Checks if the given tag is fixed. A fixed tag can only contain one value.
+Unfixed tags can contain lists of values.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE, if the given tag is fixed.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="tag" transfer-ownership="none">
+          <doc xml:whitespace="preserve">tag to check</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_list_copy_value"
+              c:identifier="gst_tag_list_copy_value">
+      <doc xml:whitespace="preserve">Copies the contents for the given tag into the value,
+merging multiple values into one if multiple values are associated
+with the tag.
+You must g_value_unset() the value after use.
+given list.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE, if a value was copied, FALSE if the tag didn't exist in the</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:whitespace="preserve">uninitialized #GValue to copy into</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="list" transfer-ownership="none">
+          <doc xml:whitespace="preserve">list to get the tag from</doc>
+          <type name="TagList" c:type="GstTagList*"/>
+        </parameter>
+        <parameter name="tag" transfer-ownership="none">
+          <doc xml:whitespace="preserve">tag to read out</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_merge_strings_with_comma"
+              c:identifier="gst_tag_merge_strings_with_comma">
+      <doc xml:whitespace="preserve">This is a convenience function for the func argument of gst_tag_register().
+It concatenates all given strings using a comma. The tag must be registered
+as a G_TYPE_STRING or this function will fail.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:whitespace="preserve">uninitialized GValue to store result in</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="src" transfer-ownership="none">
+          <doc xml:whitespace="preserve">GValue to copy from</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_merge_use_first"
+              c:identifier="gst_tag_merge_use_first">
+      <doc xml:whitespace="preserve">This is a convenience function for the func argument of gst_tag_register().
+It creates a copy of the first value from the list.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:whitespace="preserve">uninitialized GValue to store result in</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="src" transfer-ownership="none">
+          <doc xml:whitespace="preserve">GValue to copy from</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_register"
+              c:identifier="gst_tag_register"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Registers a new tag type for the use with GStreamer's type system. If a type
+with that name is already registered, that one is used.
+The old registration may have used a different type however. So don't rely
+on your supplied values.
+that there can only be one single value for this tag in a tag list and
+any additional values will silenty be discarded when being added (unless
+#GST_TAG_MERGE_REPLACE, #GST_TAG_MERGE_REPLACE_ALL, or
+#GST_TAG_MERGE_PREPEND is used as merge mode, in which case the new
+value will replace the old one in the list).
+The merge function will be called from gst_tag_list_copy_value() when
+it is required that one or more values for a tag be condensed into
+one single value. This may happen from gst_tag_list_get_string(),
+gst_tag_list_get_int(), gst_tag_list_get_double() etc. What will happen
+exactly in that case depends on how the tag was registered and if a
+merge function was supplied and if so which one.
+gst_tag_merge_strings_with_comma().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name or identifier string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="flag" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a flag describing the type of tag info</doc>
+          <type name="TagFlag" c:type="GstTagFlag"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the type this data is in</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <doc xml:whitespace="preserve">human-readable name</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a human-readable description about this tag</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none">
+          <doc xml:whitespace="preserve">function for merging multiple values of this tag, or NULL</doc>
+          <type name="TagMergeFunc" c:type="GstTagMergeFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="trace_new" c:identifier="gst_trace_new" introspectable="0">
+      <doc xml:whitespace="preserve">Create a ringbuffer of @size in the file with @filename to
+store trace results in.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new #GstTrace.</doc>
+        <type name="Trace" c:type="GstTrace*"/>
+      </return-value>
+      <parameters>
+        <parameter name="filename" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a filename</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the max size of the file</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="trace_read_tsc" c:identifier="gst_trace_read_tsc">
+      <doc xml:whitespace="preserve">Read a platform independent timer value that can be used in
+benchmarks.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dst" transfer-ownership="none">
+          <doc xml:whitespace="preserve">(out) pointer to hold the result.</doc>
+          <type name="gint64" c:type="gint64*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_find_get_type" c:identifier="gst_type_find_get_type">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="type_find_register" c:identifier="gst_type_find_register">
+      <doc xml:whitespace="preserve">Registers a new typefind function to be used for typefinding. After
+registering this function will be available for typefinding.
+This function is typically called during an element's plugin initialization.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE on success, FALSE otherwise</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="plugin" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GstPlugin, or NULL for a static typefind function (note that passing NULL only works in GStreamer 0.10.16 and later)</doc>
+          <type name="Plugin" c:type="GstPlugin*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The name for registering</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="rank" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The rank (or importance) of this typefind function</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="6"
+                   destroy="7">
+          <doc xml:whitespace="preserve">The #GstTypeFindFunction to use</doc>
+          <type name="TypeFindFunction" c:type="GstTypeFindFunction"/>
+        </parameter>
+        <parameter name="extensions" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Optional extensions that could belong to this type</doc>
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="possible_caps" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Optionally the caps that could be returned when typefinding succeeds</doc>
+          <type name="Caps" c:type="GstCaps*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Optional user data. This user data must be available until the plugin is unloaded.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="data_notify" transfer-ownership="none" scope="async">
+          <doc xml:whitespace="preserve">a #GDestroyNotify that will be called on @data when the plugin is unloaded.</doc>
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_register_static_full"
+              c:identifier="gst_type_register_static_full"
+              version="0.10.14"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Helper function which constructs a #GTypeInfo structure and registers a
+GType, but which generates less linker overhead than a static const
+#GTypeInfo structure. For further details of the parameters, please see
+#GTypeInfo in the GLib documentation.
+Registers type_name as the name of a new static type derived from
+parent_type. The value of flags determines the nature (e.g. abstract or
+not) of the type. It works by filling a GTypeInfo struct and calling
+g_type_register_static().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">A #GType for the newly-registered type.</doc>
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The GType of the parent type the newly registered type will derive from</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="type_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">NULL-terminated string used as the name of the new type</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="class_size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Size of the class structure.</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="base_init" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Location of the base initialization function (optional).</doc>
+          <type name="GObject.BaseInitFunc" c:type="GBaseInitFunc"/>
+        </parameter>
+        <parameter name="base_finalize" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Location of the base finalization function (optional).</doc>
+          <type name="GObject.BaseFinalizeFunc" c:type="GBaseFinalizeFunc"/>
+        </parameter>
+        <parameter name="class_init" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Location of the class initialization function for class types Location of the default vtable inititalization function for interface types. (optional)</doc>
+          <type name="GObject.ClassInitFunc" c:type="GClassInitFunc"/>
+        </parameter>
+        <parameter name="class_finalize" transfer-ownership="none" closure="7">
+          <doc xml:whitespace="preserve">Location of the class finalization function for class types. Location of the default vtable finalization function for interface types. (optional)</doc>
+          <type name="GObject.ClassFinalizeFunc" c:type="GClassFinalizeFunc"/>
+        </parameter>
+        <parameter name="class_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">User-supplied data passed to the class init/finalize functions.</doc>
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="instance_size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Size of the instance (object) structure (required for instantiatable types only).</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="n_preallocs" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of pre-allocated (cached) instances to reserve memory for (0 indicates no caching). Ignored on recent GLib's.</doc>
+          <type name="guint16" c:type="guint16"/>
+        </parameter>
+        <parameter name="instance_init" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Location of the instance initialization function (optional, for instantiatable types only).</doc>
+          <type name="GObject.InstanceInitFunc" c:type="GInstanceInitFunc"/>
+        </parameter>
+        <parameter name="value_table" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A GTypeValueTable function table for generic handling of GValues of this type (usually only useful for fundamental types).</doc>
+          <type name="GObject.TypeValueTable" c:type="GTypeValueTable*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#GTypeFlags for this GType. E.g: G_TYPE_FLAG_ABSTRACT</doc>
+          <type name="GObject.TypeFlags" c:type="GTypeFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="update_registry"
+              c:identifier="gst_update_registry"
+              version="0.10.12">
+      <doc xml:whitespace="preserve">Forces GStreamer to re-scan its plugin paths and update the default
+plugin registry.
+Applications will almost never need to call this function, it is only
+useful if the application knows new plugins have been installed (or old
+ones removed) since the start of the application (or, to be precise, the
+first call to gst_init()) and the application wants to make use of any
+newly-installed plugins without restarting the application.
+Applications should assume that the registry update is neither atomic nor
+thread-safe and should therefore not have any dynamic pipelines running
+(including the playbin and decodebin elements) and should also not create
+any elements or access the GStreamer registry while the update is in
+progress.
+Note that this function may block for a significant amount of time.
+imply that there were changes), otherwise %FALSE.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the registry has been updated successfully (does not</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="uri_construct" c:identifier="gst_uri_construct">
+      <doc xml:whitespace="preserve">Constructs a URI for a given valid protocol and location.
+URI. Returns NULL if the given URI protocol is not valid, or the given
+location is NULL.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new string for this</doc>
+        <array c:type="gchar*">
+          <type name="utf8" c:type="gchar"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="protocol" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Protocol for URI</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="location" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Location for URI</doc>
+          <array c:type="gchar*">
+            <type name="utf8" c:type="gchar"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="uri_get_location" c:identifier="gst_uri_get_location">
+      <doc xml:whitespace="preserve">Extracts the location out of a given valid URI, ie. the protocol and "://"
+are stripped from the URI, which means that the location returned includes
+the hostname if one is specified. The returned string must be freed using
+g_free().
+URI. Returns NULL if the URI isn't valid. If the URI does not contain
+a location, an empty string is returned.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">the location for this</doc>
+        <array c:type="gchar*">
+          <type name="utf8" c:type="gchar"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="uri" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A URI string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="uri_get_protocol" c:identifier="gst_uri_get_protocol">
+      <doc xml:whitespace="preserve">Extracts the protocol out of a given valid URI. The returned string must be
+freed using g_free().</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">The protocol for this URI.</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="uri" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A URI string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="uri_has_protocol"
+              c:identifier="gst_uri_has_protocol"
+              version="0.10.4">
+      <doc xml:whitespace="preserve">Checks if the protocol of a given valid URI matches @protocol.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the protocol matches.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="uri" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a URI string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="protocol" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a protocol string (e.g. "http")</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="uri_is_valid" c:identifier="gst_uri_is_valid">
+      <doc xml:whitespace="preserve">Tests if the given string is a valid URI identifier. URIs start with a valid
+scheme followed by ":" and maybe a string identifying the location.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if the string is a valid URI</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="uri" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A URI string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="uri_protocol_is_supported"
+              c:identifier="gst_uri_protocol_is_supported"
+              version="0.10.13">
+      <doc xml:whitespace="preserve">Checks if an element exists that supports the given URI protocol. Note
+that a positive return value does not imply that a subsequent call to
+gst_element_make_from_uri() is guaranteed to work.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Whether to check for a source or a sink</doc>
+          <type name="URIType" c:type="GstURIType"/>
+        </parameter>
+        <parameter name="protocol" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Protocol that should be checked for (e.g. "http" or "smb")</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="uri_protocol_is_valid"
+              c:identifier="gst_uri_protocol_is_valid">
+      <doc xml:whitespace="preserve">Tests if the given string is a valid protocol identifier. Protocols
+must consist of alphanumeric characters, '+', '-' and '.' and must
+start with a alphabetic character. See RFC 3986 Section 3.1.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if the string is a valid protocol identifier, FALSE otherwise.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="protocol" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A string</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_array_binary_search"
+              c:identifier="gst_util_array_binary_search"
+              version="0.10.23">
+      <doc xml:whitespace="preserve">Searches inside @array for @search_data by using the comparison function
+As @search_data is always passed as second argument to @search_func it's
+not required that @search_data has the same type as the array elements.
+The complexity of this search function is O(log (num_elements)).</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">The address of the found element or %NULL if nothing was found</doc>
+        <type name="gpointer" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the sorted input array</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+        <parameter name="num_elements" transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of elements in the array</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="element_size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">size of every element in bytes</doc>
+          <type name="gsize" c:type="gsize"/>
+        </parameter>
+        <parameter name="search_func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="6">
+          <doc xml:whitespace="preserve">function to compare two elements, @search_data will always be passed as second argument</doc>
+          <type name="GLib.CompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="mode" transfer-ownership="none">
+          <doc xml:whitespace="preserve">search mode that should be used</doc>
+          <type name="SearchMode" c:type="GstSearchMode"/>
+        </parameter>
+        <parameter name="search_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">element that should be found</doc>
+          <type name="gpointer" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data to pass to @search_func</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_double_to_fraction"
+              c:identifier="gst_util_double_to_fraction"
+              version="0.10.26">
+      <doc xml:whitespace="preserve">Transforms a #gdouble to a fraction and simplifies
+the result.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="src" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#gdouble to transform</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </parameter>
+        <parameter name="dest_n"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">pointer to a #gint to hold the result numerator</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="dest_d"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">pointer to a #gint to hold the result denominator</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_dump_mem" c:identifier="gst_util_dump_mem">
+      <doc xml:whitespace="preserve">Dumps the memory block into a hex representation. Useful for debugging.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mem" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to the memory to dump</doc>
+          <type name="guint8" c:type="guchar*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the size of the memory block to dump</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_fraction_add"
+              c:identifier="gst_util_fraction_add"
+              version="0.10.26">
+      <doc xml:whitespace="preserve">Adds the fractions @a_n/@a_d and @b_n/@b_d and stores
+the result in @res_n and @res_d.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%FALSE on overflow, %TRUE otherwise.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="a_n" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Numerator of first value</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="a_d" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Denominator of first value</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="b_n" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Numerator of second value</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="b_d" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Denominator of second value</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="res_n"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">Pointer to #gint to hold the result numerator</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="res_d"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">Pointer to #gint to hold the result denominator</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_fraction_compare"
+              c:identifier="gst_util_fraction_compare"
+              version="0.10.31">
+      <doc xml:whitespace="preserve">Compares the fractions @a_n/@a_d and @b_n/@b_d and returns
+-1 if a &lt; b, 0 if a = b and 1 if a &gt; b.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">-1 if a &lt; b; 0 if a = b; 1 if a &gt; b.</doc>
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="a_n" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Numerator of first value</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="a_d" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Denominator of first value</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="b_n" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Numerator of second value</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="b_d" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Denominator of second value</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_fraction_multiply"
+              c:identifier="gst_util_fraction_multiply"
+              version="0.10.26">
+      <doc xml:whitespace="preserve">Multiplies the fractions @a_n/@a_d and @b_n/@b_d and stores
+the result in @res_n and @res_d.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%FALSE on overflow, %TRUE otherwise.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="a_n" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Numerator of first value</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="a_d" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Denominator of first value</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="b_n" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Numerator of second value</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="b_d" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Denominator of second value</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="res_n"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">Pointer to #gint to hold the result numerator</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+        <parameter name="res_d"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">Pointer to #gint to hold the result denominator</doc>
+          <type name="gint" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_fraction_to_double"
+              c:identifier="gst_util_fraction_to_double"
+              version="0.10.26">
+      <doc xml:whitespace="preserve">Transforms a fraction to a #gdouble.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="src_n" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Fraction numerator as #gint</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="src_d" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Fraction denominator #gint</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="dest"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">pointer to a #gdouble for the result</doc>
+          <type name="gdouble" c:type="gdouble*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_gdouble_to_guint64"
+              c:identifier="gst_util_gdouble_to_guint64">
+      <return-value transfer-ownership="none">
+        <type name="guint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="gdouble" c:type="gdouble"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_get_timestamp"
+              c:identifier="gst_util_get_timestamp"
+              version="0.10.16">
+      <doc xml:whitespace="preserve">Get a timestamp as GstClockTime to be used for interval meassurements.
+The timestamp should not be interpreted in any other way.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the timestamp</doc>
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </return-value>
+    </function>
+    <function name="util_greatest_common_divisor"
+              c:identifier="gst_util_greatest_common_divisor"
+              version="0.10.26">
+      <doc xml:whitespace="preserve">Calculates the greatest common divisor of @a
+and @b.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">Greatest common divisor of @a and @b</doc>
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <doc xml:whitespace="preserve">First value as #gint</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Second value as #gint</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_guint64_to_gdouble"
+              c:identifier="gst_util_guint64_to_gdouble">
+      <return-value transfer-ownership="none">
+        <type name="gdouble" c:type="gdouble"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="guint64" c:type="guint64"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_seqnum_compare"
+              c:identifier="gst_util_seqnum_compare"
+              version="0.10.22">
+      <doc xml:whitespace="preserve">Compare two sequence numbers, handling wraparound.
+The current implementation just returns (gint32)(@s1 - @s2).
+positive number if @s1 is after @s2.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">A negative number if @s1 is before @s2, 0 if they are equal, or a</doc>
+        <type name="gint32" c:type="gint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="s1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A sequence number.</doc>
+          <type name="guint32" c:type="guint32"/>
+        </parameter>
+        <parameter name="s2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Another sequence number.</doc>
+          <type name="guint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_seqnum_next"
+              c:identifier="gst_util_seqnum_next"
+              version="0.10.22">
+      <doc xml:whitespace="preserve">Return a constantly incrementing sequence number.
+This function is used internally to GStreamer to be able to determine which
+events and messages are "the same". For example, elements may set the seqnum
+on a segment-done message to be the same as that of the last seek event, to
+indicate that event and the message correspond to the same segment.
+overflow back to 0 at some point. Use gst_util_seqnum_compare() to make sure
+you handle wraparound correctly.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">A constantly incrementing 32-bit unsigned integer, which might</doc>
+        <type name="guint32" c:type="guint32"/>
+      </return-value>
+    </function>
+    <function name="util_set_object_arg"
+              c:identifier="gst_util_set_object_arg">
+      <doc xml:whitespace="preserve">Convertes the string value to the type of the objects argument and
+sets the argument with it.
+Note that this function silently returns if @object has no property named</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the object to set the argument of</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the name of the argument to set</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the string value to set</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_set_value_from_string"
+              c:identifier="gst_util_set_value_from_string">
+      <doc xml:whitespace="preserve">Converts the string to the type of the value and
+sets the value with it.
+Note that this function is dangerous as it does not return any indication
+if the conversion worked or not.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:whitespace="preserve">the value to set</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value_str" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the string to get the value from</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_uint64_scale" c:identifier="gst_util_uint64_scale">
+      <doc xml:whitespace="preserve">Scale @val by the rational number @num / @denom, avoiding overflows and
+underflows and without loss of precision.
+This function can potentially be very slow if val and num are both
+greater than G_MAXUINT32.
+function returns G_MAXUINT64.  If the result is not exactly
+representable as an integer it is truncated.  See also
+gst_util_uint64_scale_round(), gst_util_uint64_scale_ceil(),
+gst_util_uint64_scale_int(), gst_util_uint64_scale_int_round(),
+gst_util_uint64_scale_int_ceil().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">@val * @num / @denom.  In the case of an overflow, this</doc>
+        <type name="guint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="val" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number to scale</doc>
+          <type name="guint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="num" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the numerator of the scale ratio</doc>
+          <type name="guint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="denom" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the denominator of the scale ratio</doc>
+          <type name="guint64" c:type="guint64"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_uint64_scale_ceil"
+              c:identifier="gst_util_uint64_scale_ceil">
+      <doc xml:whitespace="preserve">Scale @val by the rational number @num / @denom, avoiding overflows and
+underflows and without loss of precision.
+This function can potentially be very slow if val and num are both
+greater than G_MAXUINT32.
+function returns G_MAXUINT64.  If the result is not exactly
+representable as an integer, it is rounded up.  See also
+gst_util_uint64_scale(), gst_util_uint64_scale_round(),
+gst_util_uint64_scale_int(), gst_util_uint64_scale_int_round(),
+gst_util_uint64_scale_int_ceil().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">@val * @num / @denom.  In the case of an overflow, this</doc>
+        <type name="guint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="val" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number to scale</doc>
+          <type name="guint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="num" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the numerator of the scale ratio</doc>
+          <type name="guint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="denom" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the denominator of the scale ratio</doc>
+          <type name="guint64" c:type="guint64"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_uint64_scale_int"
+              c:identifier="gst_util_uint64_scale_int">
+      <doc xml:whitespace="preserve">Scale @val by the rational number @num / @denom, avoiding overflows and
+underflows and without loss of precision.  @num must be non-negative and
+function returns G_MAXUINT64.  If the result is not exactly
+representable as an integer, it is truncated.  See also
+gst_util_uint64_scale_int_round(), gst_util_uint64_scale_int_ceil(),
+gst_util_uint64_scale(), gst_util_uint64_scale_round(),
+gst_util_uint64_scale_ceil().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">@val * @num / @denom.  In the case of an overflow, this</doc>
+        <type name="guint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="val" transfer-ownership="none">
+          <doc xml:whitespace="preserve">guint64 (such as a #GstClockTime) to scale.</doc>
+          <type name="guint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="num" transfer-ownership="none">
+          <doc xml:whitespace="preserve">numerator of the scale factor.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="denom" transfer-ownership="none">
+          <doc xml:whitespace="preserve">denominator of the scale factor.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_uint64_scale_int_ceil"
+              c:identifier="gst_util_uint64_scale_int_ceil">
+      <doc xml:whitespace="preserve">Scale @val by the rational number @num / @denom, avoiding overflows and
+underflows and without loss of precision.  @num must be non-negative and
+function returns G_MAXUINT64.  If the result is not exactly
+representable as an integer, it is rounded up.  See also
+gst_util_uint64_scale_int(), gst_util_uint64_scale_int_round(),
+gst_util_uint64_scale(), gst_util_uint64_scale_round(),
+gst_util_uint64_scale_ceil().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">@val * @num / @denom.  In the case of an overflow, this</doc>
+        <type name="guint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="val" transfer-ownership="none">
+          <doc xml:whitespace="preserve">guint64 (such as a #GstClockTime) to scale.</doc>
+          <type name="guint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="num" transfer-ownership="none">
+          <doc xml:whitespace="preserve">numerator of the scale factor.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="denom" transfer-ownership="none">
+          <doc xml:whitespace="preserve">denominator of the scale factor.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_uint64_scale_int_round"
+              c:identifier="gst_util_uint64_scale_int_round">
+      <doc xml:whitespace="preserve">Scale @val by the rational number @num / @denom, avoiding overflows and
+underflows and without loss of precision.  @num must be non-negative and
+function returns G_MAXUINT64.  If the result is not exactly
+representable as an integer, it is rounded to the nearest integer
+(half-way cases are rounded up).  See also gst_util_uint64_scale_int(),
+gst_util_uint64_scale_int_ceil(), gst_util_uint64_scale(),
+gst_util_uint64_scale_round(), gst_util_uint64_scale_ceil().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">@val * @num / @denom.  In the case of an overflow, this</doc>
+        <type name="guint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="val" transfer-ownership="none">
+          <doc xml:whitespace="preserve">guint64 (such as a #GstClockTime) to scale.</doc>
+          <type name="guint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="num" transfer-ownership="none">
+          <doc xml:whitespace="preserve">numerator of the scale factor.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="denom" transfer-ownership="none">
+          <doc xml:whitespace="preserve">denominator of the scale factor.</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_uint64_scale_round"
+              c:identifier="gst_util_uint64_scale_round">
+      <doc xml:whitespace="preserve">Scale @val by the rational number @num / @denom, avoiding overflows and
+underflows and without loss of precision.
+This function can potentially be very slow if val and num are both
+greater than G_MAXUINT32.
+function returns G_MAXUINT64.  If the result is not exactly
+representable as an integer, it is rounded to the nearest integer
+(half-way cases are rounded up).  See also gst_util_uint64_scale(),
+gst_util_uint64_scale_ceil(), gst_util_uint64_scale_int(),
+gst_util_uint64_scale_int_round(), gst_util_uint64_scale_int_ceil().</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">@val * @num / @denom.  In the case of an overflow, this</doc>
+        <type name="guint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="val" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number to scale</doc>
+          <type name="guint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="num" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the numerator of the scale ratio</doc>
+          <type name="guint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="denom" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the denominator of the scale ratio</doc>
+          <type name="guint64" c:type="guint64"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_array_append_value"
+              c:identifier="gst_value_array_append_value">
+      <doc xml:whitespace="preserve">Appends @append_value to the GstValueArray in @value.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue of type #GST_TYPE_ARRAY</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="append_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the value to append</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_array_get_size"
+              c:identifier="gst_value_array_get_size">
+      <doc xml:whitespace="preserve">Gets the number of values contained in @value.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the number of values</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue of type #GST_TYPE_ARRAY</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_array_get_type"
+              c:identifier="gst_value_array_get_type">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="value_array_get_value"
+              c:identifier="gst_value_array_get_value">
+      <doc xml:whitespace="preserve">Gets the value that is a member of the array contained in @value and
+has the index @index.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the value at the given index</doc>
+        <type name="GObject.Value" c:type="GValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue of type #GST_TYPE_ARRAY</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="index" transfer-ownership="none">
+          <doc xml:whitespace="preserve">index of value to get from the array</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_array_prepend_value"
+              c:identifier="gst_value_array_prepend_value">
+      <doc xml:whitespace="preserve">Prepends @prepend_value to the GstValueArray in @value.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue of type #GST_TYPE_ARRAY</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="prepend_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the value to prepend</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_can_compare" c:identifier="gst_value_can_compare">
+      <doc xml:whitespace="preserve">Determines if @value1 and @value2 can be compared.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if the values can be compared</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="value1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a value to compare</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">another value to compare</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_can_intersect"
+              c:identifier="gst_value_can_intersect">
+      <doc xml:whitespace="preserve">Determines if intersecting two values will produce a valid result.
+Two values will produce a valid intersection if they have the same
+type, or if there is a method (registered by
+gst_value_register_intersect_func()) to calculate the intersection.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if the values can intersect</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="value1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a value to intersect</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">another value to intersect</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_can_subtract" c:identifier="gst_value_can_subtract">
+      <doc xml:whitespace="preserve">Checks if it's possible to subtract @subtrahend from @minuend.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if a subtraction is possible</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="minuend" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the value to subtract from</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="subtrahend" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the value to subtract</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_can_union" c:identifier="gst_value_can_union">
+      <doc xml:whitespace="preserve">Determines if @value1 and @value2 can be non-trivially unioned.
+Any two values can be trivially unioned by adding both of them
+to a GstValueList.  However, certain types have the possibility
+to be unioned in a simpler way.  For example, an integer range
+and an integer can be unioned if the integer is a subset of the
+integer range.  If there is the possibility that two values can
+be unioned, this function returns TRUE.
+be unioned.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if there is a function allowing the two values to</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="value1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a value to union</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">another value to union</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_compare" c:identifier="gst_value_compare">
+      <doc xml:whitespace="preserve">Compares @value1 and @value2.  If @value1 and @value2 cannot be
+compared, the function returns GST_VALUE_UNORDERED.  Otherwise,
+if @value1 is greater than @value2, GST_VALUE_GREATER_THAN is returned.
+If @value1 is less than @value2, GST_VALUE_LESS_THAN is returned.
+If the values are equal, GST_VALUE_EQUAL is returned.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">comparison result</doc>
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a value to compare</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">another value to compare</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_deserialize" c:identifier="gst_value_deserialize">
+      <doc xml:whitespace="preserve">Tries to deserialize a string into the type specified by the given GValue.
+If the operation succeeds, TRUE is returned, FALSE otherwise.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE on success</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:whitespace="preserve">#GValue to fill with contents of deserialization</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="src" transfer-ownership="none">
+          <doc xml:whitespace="preserve">string to deserialize</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_dup_mini_object"
+              c:identifier="gst_value_dup_mini_object"
+              version="0.10.20">
+      <doc xml:whitespace="preserve">Get the contents of a %GST_TYPE_MINI_OBJECT derived #GValue,
+increasing its reference count. If the contents of the #GValue
+are %NULL, %NULL will be returned.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">mini object contents of @value</doc>
+        <type name="MiniObject" c:type="GstMiniObject*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a valid #GValue of %GST_TYPE_MINI_OBJECT derived type</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_fraction_multiply"
+              c:identifier="gst_value_fraction_multiply">
+      <doc xml:whitespace="preserve">Multiplies the two #GValue items containing a #GST_TYPE_FRACTION and sets</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">FALSE in case of an error (like integer overflow), TRUE otherwise.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="product" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a GValue initialized to #GST_TYPE_FRACTION</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="factor1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a GValue initialized to #GST_TYPE_FRACTION</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="factor2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a GValue initialized to #GST_TYPE_FRACTION</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_fraction_subtract"
+              c:identifier="gst_value_fraction_subtract">
+      <doc xml:whitespace="preserve">Subtracts the @subtrahend from the @minuend and sets @dest to the result.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">FALSE in case of an error (like integer overflow), TRUE otherwise.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a GValue initialized to #GST_TYPE_FRACTION</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="minuend" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a GValue initialized to #GST_TYPE_FRACTION</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="subtrahend" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a GValue initialized to #GST_TYPE_FRACTION</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_caps" c:identifier="gst_value_get_caps">
+      <doc xml:whitespace="preserve">Gets the contents of @value. The reference count of the returned
+#GstCaps will not be modified, therefore the caller must take one
+before getting rid of the @value.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the contents of @value</doc>
+        <type name="Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a GValue initialized to GST_TYPE_CAPS</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_date" c:identifier="gst_value_get_date">
+      <doc xml:whitespace="preserve">Gets the contents of @value.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the contents of @value</doc>
+        <type name="GLib.Date" c:type="GDate*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a GValue initialized to GST_TYPE_DATE</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_double_range_max"
+              c:identifier="gst_value_get_double_range_max">
+      <doc xml:whitespace="preserve">Gets the maximum of the range specified by @value.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the maxumum of the range</doc>
+        <type name="gdouble" c:type="gdouble"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a GValue initialized to GST_TYPE_DOUBLE_RANGE</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_double_range_min"
+              c:identifier="gst_value_get_double_range_min">
+      <doc xml:whitespace="preserve">Gets the minimum of the range specified by @value.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the minimum of the range</doc>
+        <type name="gdouble" c:type="gdouble"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a GValue initialized to GST_TYPE_DOUBLE_RANGE</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_fourcc" c:identifier="gst_value_get_fourcc">
+      <doc xml:whitespace="preserve">Gets the #guint32 fourcc contained in @value.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the #guint32 fourcc contained in @value.</doc>
+        <type name="guint32" c:type="guint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a GValue initialized to #GST_TYPE_FOURCC</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_fraction_denominator"
+              c:identifier="gst_value_get_fraction_denominator">
+      <doc xml:whitespace="preserve">Gets the denominator of the fraction specified by @value.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the denominator of the fraction.</doc>
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a GValue initialized to #GST_TYPE_FRACTION</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_fraction_numerator"
+              c:identifier="gst_value_get_fraction_numerator">
+      <doc xml:whitespace="preserve">Gets the numerator of the fraction specified by @value.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the numerator of the fraction.</doc>
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a GValue initialized to #GST_TYPE_FRACTION</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_fraction_range_max"
+              c:identifier="gst_value_get_fraction_range_max">
+      <doc xml:whitespace="preserve">Gets the maximum of the range specified by @value.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the maximum of the range</doc>
+        <type name="GObject.Value" c:type="GValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a GValue initialized to GST_TYPE_FRACTION_RANGE</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_fraction_range_min"
+              c:identifier="gst_value_get_fraction_range_min">
+      <doc xml:whitespace="preserve">Gets the minimum of the range specified by @value.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the minimum of the range</doc>
+        <type name="GObject.Value" c:type="GValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a GValue initialized to GST_TYPE_FRACTION_RANGE</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_int64_range_max"
+              c:identifier="gst_value_get_int64_range_max"
+              version="0.10.31">
+      <doc xml:whitespace="preserve">Gets the maximum of the range specified by @value.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the maxumum of the range</doc>
+        <type name="gint64" c:type="gint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a GValue initialized to GST_TYPE_INT64_RANGE</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_int64_range_min"
+              c:identifier="gst_value_get_int64_range_min"
+              version="0.10.31">
+      <doc xml:whitespace="preserve">Gets the minimum of the range specified by @value.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the minimum of the range</doc>
+        <type name="gint64" c:type="gint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a GValue initialized to GST_TYPE_INT64_RANGE</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_int_range_max"
+              c:identifier="gst_value_get_int_range_max">
+      <doc xml:whitespace="preserve">Gets the maximum of the range specified by @value.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the maxumum of the range</doc>
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a GValue initialized to GST_TYPE_INT_RANGE</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_int_range_min"
+              c:identifier="gst_value_get_int_range_min">
+      <doc xml:whitespace="preserve">Gets the minimum of the range specified by @value.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the minimum of the range</doc>
+        <type name="gint" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a GValue initialized to GST_TYPE_INT_RANGE</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_mini_object"
+              c:identifier="gst_value_get_mini_object">
+      <doc xml:whitespace="preserve">Get the contents of a %GST_TYPE_MINI_OBJECT derived #GValue.
+Does not increase the refcount of the returned object.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">mini object contents of @value</doc>
+        <type name="MiniObject" c:type="GstMiniObject*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a valid #GValue of %GST_TYPE_MINI_OBJECT derived type</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_structure"
+              c:identifier="gst_value_get_structure"
+              version="0.10.15">
+      <doc xml:whitespace="preserve">Gets the contents of @value.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the contents of @value</doc>
+        <type name="Structure" c:type="GstStructure*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a GValue initialized to GST_TYPE_STRUCTURE</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_init_and_copy"
+              c:identifier="gst_value_init_and_copy">
+      <doc xml:whitespace="preserve">Initialises the target value to be of the same type as source and then copies
+the contents from source to target.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:whitespace="preserve">the target value</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="src" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the source value</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_intersect" c:identifier="gst_value_intersect">
+      <doc xml:whitespace="preserve">Calculates the intersection of two values.  If the values have
+a non-empty intersection, the value representing the intersection
+is placed in @dest.  If the intersection is non-empty, @dest is
+not modified.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">TRUE if the intersection is non-empty</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:whitespace="preserve">a uninitialized #GValue that will hold the calculated intersection value</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a value to intersect</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">another value to intersect</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_is_fixed" c:identifier="gst_value_is_fixed">
+      <doc xml:whitespace="preserve">Tests if the given GValue, if available in a GstStructure (or any other
+(which means: multiple possible values, such as data lists or data
+ranges) value.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">true if the value is "fixed".</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GValue to check</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_list_append_value"
+              c:identifier="gst_value_list_append_value">
+      <doc xml:whitespace="preserve">Appends @append_value to the GstValueList in @value.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue of type #GST_TYPE_LIST</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="append_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the value to append</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_list_concat" c:identifier="gst_value_list_concat">
+      <doc xml:whitespace="preserve">Concatenates copies of @value1 and @value2 into a list.  Values that are not
+of type #GST_TYPE_LIST are treated as if they were lists of length 1.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:whitespace="preserve">an uninitialized #GValue to take the result</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_list_get_size"
+              c:identifier="gst_value_list_get_size">
+      <doc xml:whitespace="preserve">Gets the number of values contained in @value.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the number of values</doc>
+        <type name="guint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue of type #GST_TYPE_LIST</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_list_get_type"
+              c:identifier="gst_value_list_get_type">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="value_list_get_value"
+              c:identifier="gst_value_list_get_value">
+      <doc xml:whitespace="preserve">Gets the value that is a member of the list contained in @value and
+has the index @index.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the value at the given index</doc>
+        <type name="GObject.Value" c:type="GValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue of type #GST_TYPE_LIST</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="index" transfer-ownership="none">
+          <doc xml:whitespace="preserve">index of value to get from the list</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_list_merge"
+              c:identifier="gst_value_list_merge"
+              version="0.10.32">
+      <doc xml:whitespace="preserve">Merges copies of @value1 and @value2.  Values that are not
+of type #GST_TYPE_LIST are treated as if they were lists of length 1.
+The result will be put into @dest and will either be a list that will not
+contain any duplicates, or a non-list type (if @value1 and @value2
+were equal).</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:whitespace="preserve">an uninitialized #GValue to take the result</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_list_prepend_value"
+              c:identifier="gst_value_list_prepend_value">
+      <doc xml:whitespace="preserve">Prepends @prepend_value to the GstValueList in @value.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue of type #GST_TYPE_LIST</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="prepend_value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the value to prepend</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_register" c:identifier="gst_value_register">
+      <doc xml:whitespace="preserve">Registers functions to perform calculations on #GValue items of a given
+type. Each type can only be added once.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="table" transfer-ownership="none">
+          <doc xml:whitespace="preserve">structure containing functions to register</doc>
+          <type name="ValueTable" c:type="GstValueTable*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_register_intersect_func"
+              c:identifier="gst_value_register_intersect_func"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Registers a function that is called to calculate the intersection
+of the values having the types @type1 and @type2.
+Intersect functions should be registered at startup before any pipelines are
+started, as gst_value_register_intersect_func() is not thread-safe and
+cannot be used at the same time as gst_value_intersect() or
+gst_value_can_intersect().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="type1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the first type to intersect</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="type2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the second type to intersect</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the intersection function</doc>
+          <type name="ValueIntersectFunc" c:type="GstValueIntersectFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_register_subtract_func"
+              c:identifier="gst_value_register_subtract_func"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Registers @func as a function capable of subtracting the values of
+Subtract functions should be registered at startup before any pipelines are
+started, as gst_value_register_subtract_func() is not thread-safe and
+cannot be used at the same time as gst_value_subtract().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="minuend_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">type of the minuend</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="subtrahend_type" transfer-ownership="none">
+          <doc xml:whitespace="preserve">type of the subtrahend</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none">
+          <doc xml:whitespace="preserve">function to use</doc>
+          <type name="ValueSubtractFunc" c:type="GstValueSubtractFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_register_union_func"
+              c:identifier="gst_value_register_union_func"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Registers a union function that can create a union between #GValue items
+of the type @type1 and @type2.
+Union functions should be registered at startup before any pipelines are
+started, as gst_value_register_union_func() is not thread-safe and cannot
+be used at the same time as gst_value_union() or gst_value_can_union().</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="type1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a type to union</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="type2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">another type to union</doc>
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a function that implments creating a union between the two types</doc>
+          <type name="ValueUnionFunc" c:type="GstValueUnionFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_serialize" c:identifier="gst_value_serialize">
+      <doc xml:whitespace="preserve">tries to transform the given @value into a string representation that allows
+getting back this string later on using gst_value_deserialize().</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">the serialization for @value or NULL if none exists</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue to serialize</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_caps" c:identifier="gst_value_set_caps">
+      <doc xml:whitespace="preserve">Sets the contents of @value to @caps. A reference to the
+provided @caps will be taken by the @value.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a GValue initialized to GST_TYPE_CAPS</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="caps" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the caps to set the value to</doc>
+          <type name="Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_date" c:identifier="gst_value_set_date">
+      <doc xml:whitespace="preserve">Sets the contents of @value to coorespond to @date.  The actual
+#GDate structure is copied before it is used.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a GValue initialized to GST_TYPE_DATE</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="date" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the date to set the value to</doc>
+          <type name="GLib.Date" c:type="GDate*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_double_range"
+              c:identifier="gst_value_set_double_range">
+      <doc xml:whitespace="preserve">Sets @value to the range specified by @start and @end.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a GValue initialized to GST_TYPE_DOUBLE_RANGE</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="start" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the start of the range</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the end of the range</doc>
+          <type name="gdouble" c:type="gdouble"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_fourcc" c:identifier="gst_value_set_fourcc">
+      <doc xml:whitespace="preserve">Sets @value to @fourcc.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a GValue initialized to #GST_TYPE_FOURCC</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="fourcc" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #guint32 fourcc to set</doc>
+          <type name="guint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_fraction" c:identifier="gst_value_set_fraction">
+      <doc xml:whitespace="preserve">Sets @value to the fraction specified by @numerator over @denominator.
+The fraction gets reduced to the smallest numerator and denominator,
+and if necessary the sign is moved to the numerator.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a GValue initialized to #GST_TYPE_FRACTION</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="numerator" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the numerator of the fraction</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="denominator" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the denominator of the fraction</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_fraction_range"
+              c:identifier="gst_value_set_fraction_range">
+      <doc xml:whitespace="preserve">Sets @value to the range specified by @start and @end.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a GValue initialized to GST_TYPE_FRACTION_RANGE</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="start" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the start of the range (a GST_TYPE_FRACTION GValue)</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the end of the range (a GST_TYPE_FRACTION GValue)</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_fraction_range_full"
+              c:identifier="gst_value_set_fraction_range_full">
+      <doc xml:whitespace="preserve">Sets @value to the range specified by @numerator_start/@denominator_start
+and @numerator_end/@denominator_end.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a GValue initialized to GST_TYPE_FRACTION_RANGE</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="numerator_start" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the numerator start of the range</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="denominator_start" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the denominator start of the range</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="numerator_end" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the numerator end of the range</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="denominator_end" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the denominator end of the range</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_int64_range"
+              c:identifier="gst_value_set_int64_range"
+              version="0.10.31">
+      <doc xml:whitespace="preserve">Sets @value to the range specified by @start and @end.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a GValue initialized to GST_TYPE_INT64_RANGE</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="start" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the start of the range</doc>
+          <type name="gint64" c:type="gint64"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the end of the range</doc>
+          <type name="gint64" c:type="gint64"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_int_range"
+              c:identifier="gst_value_set_int_range">
+      <doc xml:whitespace="preserve">Sets @value to the range specified by @start and @end.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a GValue initialized to GST_TYPE_INT_RANGE</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="start" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the start of the range</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the end of the range</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_mini_object"
+              c:identifier="gst_value_set_mini_object">
+      <doc xml:whitespace="preserve">Set the contents of a %GST_TYPE_MINI_OBJECT derived #GValue to
+The caller retains ownership of the reference.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a valid #GValue of %GST_TYPE_MINI_OBJECT derived type</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="mini_object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">mini object value to set</doc>
+          <type name="MiniObject" c:type="GstMiniObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_structure"
+              c:identifier="gst_value_set_structure"
+              version="0.10.15">
+      <doc xml:whitespace="preserve">Sets the contents of @value to @structure.  The actual</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a GValue initialized to GST_TYPE_STRUCTURE</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="structure" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the structure to set the value to</doc>
+          <type name="Structure" c:type="GstStructure*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_subtract" c:identifier="gst_value_subtract">
+      <doc xml:whitespace="preserve">Subtracts @subtrahend from @minuend and stores the result in @dest.
+Note that this means subtraction as in sets, not as in mathematics.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the subtraction is not empty</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:whitespace="preserve">the destination value for the result if the subtraction is not empty</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="minuend" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the value to subtract from</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="subtrahend" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the value to subtract</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_take_mini_object"
+              c:identifier="gst_value_take_mini_object">
+      <doc xml:whitespace="preserve">Set the contents of a %GST_TYPE_MINI_OBJECT derived #GValue to
+Takes over the ownership of the caller's reference to @mini_object;
+the caller doesn't have to unref it any more.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a valid #GValue of %GST_TYPE_MINI_OBJECT derived type</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="mini_object" transfer-ownership="full">
+          <doc xml:whitespace="preserve">mini object value to take</doc>
+          <type name="MiniObject" c:type="GstMiniObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_union" c:identifier="gst_value_union">
+      <doc xml:whitespace="preserve">Creates a GValue corresponding to the union of @value1 and @value2.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">always returns %TRUE</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:whitespace="preserve">the destination value</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value1" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a value to union</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <doc xml:whitespace="preserve">another value to union</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="version" c:identifier="gst_version">
+      <doc xml:whitespace="preserve">Gets the version number of the GStreamer library.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="major"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">pointer to a guint to store the major version number</doc>
+          <type name="guint" c:type="guint*"/>
+        </parameter>
+        <parameter name="minor"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">pointer to a guint to store the minor version number</doc>
+          <type name="guint" c:type="guint*"/>
+        </parameter>
+        <parameter name="micro"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">pointer to a guint to store the micro version number</doc>
+          <type name="guint" c:type="guint*"/>
+        </parameter>
+        <parameter name="nano"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full">
+          <doc xml:whitespace="preserve">pointer to a guint to store the nano version number</doc>
+          <type name="guint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="version_string" c:identifier="gst_version_string">
+      <doc xml:whitespace="preserve">This function returns a string that is useful for describing this version
+of GStreamer.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a newly allocated string describing this version</doc>
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/gstreamer/base/GstBase-0.10.gir b/extra/gstreamer/base/GstBase-0.10.gir
new file mode 100644 (file)
index 0000000..8570492
--- /dev/null
@@ -0,0 +1,7329 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.2"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gst" version="0.10"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="gstreamer-base-0.10"/>
+  <c:include name="gst/base/gstadapter.h"/>
+  <c:include name="gst/base/gstbaseparse.h"/>
+  <c:include name="gst/base/gstbasesink.h"/>
+  <c:include name="gst/base/gstbasesrc.h"/>
+  <c:include name="gst/base/gstbasetransform.h"/>
+  <c:include name="gst/base/gstbitreader.h"/>
+  <c:include name="gst/base/gstbytereader.h"/>
+  <c:include name="gst/base/gstbytewriter.h"/>
+  <c:include name="gst/base/gstcollectpads.h"/>
+  <c:include name="gst/base/gstdataqueue.h"/>
+  <c:include name="gst/base/gstpushsrc.h"/>
+  <c:include name="gst/base/gsttypefindhelper.h"/>
+  <namespace name="GstBase"
+             version="0.10"
+             shared-library="libgstreamer-0.10.so.0,libgstbase-0.10.so.0"
+             c:identifier-prefixes="Gst"
+             c:symbol-prefixes="gst">
+    <class name="Adapter"
+           c:symbol-prefix="adapter"
+           c:type="GstAdapter"
+           parent="GObject.Object"
+           glib:type-name="GstAdapter"
+           glib:get-type="gst_adapter_get_type"
+           glib:type-struct="AdapterClass">
+      <doc xml:whitespace="preserve">This class is for elements that receive buffers in an undesired size.
+While for example raw video contains one image per buffer, the same is not
+true for a lot of other formats, especially those that come directly from
+a file. So if you have undefined buffer sizes and require a specific size,
+this object is for you.
+An adapter is created with gst_adapter_new(). It can be freed again with
+g_object_unref().
+into the adapter using gst_adapter_push() and the data is then read back
+in chunks of the desired size using gst_adapter_peek(). After the data is
+processed, it is freed using gst_adapter_flush().
+Other methods such as gst_adapter_take() and gst_adapter_take_buffer()
+combine gst_adapter_peek() and gst_adapter_flush() in one method and are
+potentially more convenient for some use cases.
+For example, a sink pad's chain function that needs to pass data to a library
+in 512-byte chunks could be implemented like this:
+|[
+static GstFlowReturn
+sink_pad_chain (GstPad *pad, GstBuffer *buffer)
+{
+MyElement *this;
+GstAdapter *adapter;
+GstFlowReturn ret = GST_FLOW_OK;
+// will give the element an extra ref; remember to drop it
+this = MY_ELEMENT (gst_pad_get_parent (pad));
+adapter = this-&gt;adapter;
+// put buffer into adapter
+gst_adapter_push (adapter, buffer);
+// while we can read out 512 bytes, process them
+while (gst_adapter_available (adapter) &gt;= 512 &amp;&amp; ret == GST_FLOW_OK) {
+// use flowreturn as an error value
+ret = my_library_foo (gst_adapter_peek (adapter, 512));
+gst_adapter_flush (adapter, 512);
+}
+gst_object_unref (this);
+return ret;
+}
+]|
+For another example, a simple element inside GStreamer that uses GstAdapter
+is the libvisual element.
+An element using GstAdapter in its sink pad chain function should ensure that
+when the FLUSH_STOP event is received, that any queued data is cleared using
+gst_adapter_clear(). Data should also be cleared or processed on EOS and
+when changing state from #GST_STATE_PAUSED to #GST_STATE_READY.
+Also check the GST_BUFFER_FLAG_DISCONT flag on the buffer. Some elements might
+need to clear the adapter after a discontinuity.
+Since 0.10.24, the adapter will keep track of the timestamps of the buffers
+that were pushed. The last seen timestamp before the current position
+can be queried with gst_adapter_prev_timestamp(). This function can
+optionally return the amount of bytes between the start of the buffer that
+carried the timestamp and the current adapter position. The distance is
+useful when dealing with, for example, raw audio samples because it allows
+you to calculate the timestamp of the current adapter position by using the
+last seen timestamp and the amount of bytes since.
+A last thing to note is that while GstAdapter is pretty optimized,
+merging buffers still might be an operation that requires a malloc() and
+memcpy() operation, and these operations are not the fastest. Because of
+this, some functions like gst_adapter_available_fast() are provided to help
+speed up such cases should you want to. To avoid repeated memory allocations,
+gst_adapter_copy() can be used to copy data into a (statically allocated)
+user provided buffer.
+GstAdapter is not MT safe. All operations on an adapter must be serialized by
+the caller. This is not normally a problem, however, as the normal use case
+of GstAdapter is inside one pad's chain function, in which case access is
+serialized via the pad's STREAM_LOCK.
+Note that gst_adapter_push() takes ownership of the buffer passed. Use
+gst_buffer_ref() before pushing it into the adapter if you still want to
+access the buffer later. The adapter will never modify the data in the
+buffer pushed in it.
+Last reviewed on 2009-05-13 (0.10.24).</doc>
+      <constructor name="new" c:identifier="gst_adapter_new">
+        <doc xml:whitespace="preserve">Creates a new #GstAdapter. Free with g_object_unref().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstAdapter</doc>
+          <type name="Adapter" c:type="GstAdapter*"/>
+        </return-value>
+      </constructor>
+      <method name="available" c:identifier="gst_adapter_available">
+        <doc xml:whitespace="preserve">Gets the maximum amount of bytes available, that is it returns the maximum
+value that can be supplied to gst_adapter_peek() without that function
+returning NULL.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of bytes available in @adapter</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="available_fast" c:identifier="gst_adapter_available_fast">
+        <doc xml:whitespace="preserve">Gets the maximum number of bytes that are immediately available without
+requiring any expensive operations (like copying the data into a
+temporary buffer).
+operations</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">number of bytes that are available in @adapter without expensive</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="clear" c:identifier="gst_adapter_clear">
+        <doc xml:whitespace="preserve">Removes all buffers from @adapter.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="copy" c:identifier="gst_adapter_copy" version="0.10.12">
+        <doc xml:whitespace="preserve">Copies @size bytes of data starting at @offset out of the buffers
+contained in @GstAdapter into an array @dest provided by the caller.
+The array @dest should be large enough to contain @size bytes.
+The user should check that the adapter has (@offset + @size) bytes
+available before calling this function.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest"
+                     direction="out"
+                     caller-allocates="1"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">the memory to copy into</doc>
+            <array length="2" c:type="guint8*">
+              <type name="guint8" c:type="guint8"/>
+            </array>
+          </parameter>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the bytes offset in the adapter to start from</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="size"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">the number of bytes to copy</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="flush" c:identifier="gst_adapter_flush">
+        <doc xml:whitespace="preserve">Flushes the first @flush bytes in the @adapter. The caller must ensure that
+at least this many bytes are available.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flush" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes to flush</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="masked_scan_uint32"
+              c:identifier="gst_adapter_masked_scan_uint32"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Scan for pattern @pattern with applied mask @mask in the adapter data,
+starting from offset @offset.
+The bytes in @pattern and @mask are interpreted left-to-right, regardless
+of endianness.  All four bytes of the pattern must be present in the
+adapter for it to match, even if the first or last bytes are masked out.
+It is an error to call this function without making sure that there is
+enough data (offset+size bytes) in the adapter.
+This function calls gst_adapter_masked_scan_uint32_peek() passing NULL
+for value.
+Example:
+&lt;programlisting&gt;
+// Assume the adapter contains 0x00 0x01 0x02 ... 0xfe 0xff
+gst_adapter_masked_scan_uint32 (adapter, 0xffffffff, 0x00010203, 0, 256);
+// -&gt; returns 0
+gst_adapter_masked_scan_uint32 (adapter, 0xffffffff, 0x00010203, 1, 255);
+// -&gt; returns -1
+gst_adapter_masked_scan_uint32 (adapter, 0xffffffff, 0x01020304, 1, 255);
+// -&gt; returns 1
+gst_adapter_masked_scan_uint32 (adapter, 0xffff, 0x0001, 0, 256);
+// -&gt; returns -1
+gst_adapter_masked_scan_uint32 (adapter, 0xffff, 0x0203, 0, 256);
+// -&gt; returns 0
+gst_adapter_masked_scan_uint32 (adapter, 0xffff0000, 0x02030000, 0, 256);
+// -&gt; returns 2
+gst_adapter_masked_scan_uint32 (adapter, 0xffff0000, 0x02030000, 0, 4);
+// -&gt; returns -1
+&lt;/programlisting&gt;</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">offset of the first match, or -1 if no match was found.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="mask" transfer-ownership="none">
+            <doc xml:whitespace="preserve">mask to apply to data before matching against @pattern</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="pattern" transfer-ownership="none">
+            <doc xml:whitespace="preserve">pattern to match (after mask is applied)</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">offset into the adapter data from which to start scanning, returns the last scanned position.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of bytes to scan from offset</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="masked_scan_uint32_peek"
+              c:identifier="gst_adapter_masked_scan_uint32_peek"
+              version="0.10.30">
+        <doc xml:whitespace="preserve">Scan for pattern @pattern with applied mask @mask in the adapter data,
+starting from offset @offset.  If a match is found, the value that matched
+is returned through @value, otherwise @value is left untouched.
+The bytes in @pattern and @mask are interpreted left-to-right, regardless
+of endianness.  All four bytes of the pattern must be present in the
+adapter for it to match, even if the first or last bytes are masked out.
+It is an error to call this function without making sure that there is
+enough data (offset+size bytes) in the adapter.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">offset of the first match, or -1 if no match was found.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="mask" transfer-ownership="none">
+            <doc xml:whitespace="preserve">mask to apply to data before matching against @pattern</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="pattern" transfer-ownership="none">
+            <doc xml:whitespace="preserve">pattern to match (after mask is applied)</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">offset into the adapter data from which to start scanning, returns the last scanned position.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of bytes to scan from offset</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">pointer to uint32 to return matching data</doc>
+            <type name="guint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek" c:identifier="gst_adapter_peek">
+        <doc xml:whitespace="preserve">Gets the first @size bytes stored in the @adapter. The returned pointer is
+valid until the next function is called on the adapter.
+Note that setting the returned pointer as the data of a #GstBuffer is
+incorrect for general-purpose plugins. The reason is that if a downstream
+element stores the buffer so that it has access to it outside of the bounds
+of its chain function, the buffer will have an invalid data pointer after
+your element flushes the bytes. In that case you should use
+gst_adapter_take(), which returns a freshly-allocated buffer that you can set
+as #GstBuffer malloc_data or the potentially more performant
+gst_adapter_take_buffer().
+Returns #NULL if @size bytes are not available.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to the first</doc>
+          <array length="0" c:type="guint8*">
+            <type name="guint8" c:type="guint8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="size"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">the number of bytes to peek</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prev_timestamp"
+              c:identifier="gst_adapter_prev_timestamp"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Get the timestamp that was before the current byte in the adapter. When
+position is returned.
+The timestamp is reset to GST_CLOCK_TIME_NONE and the distance is set to 0 when
+the adapter is first created or when it is cleared. This also means that before
+the first byte with a timestamp is removed from the adapter, the timestamp
+and distance returned are GST_CLOCK_TIME_NONE and 0 respectively.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The previously seen timestamp.</doc>
+          <type name="Gst.ClockTime" c:type="GstClockTime"/>
+        </return-value>
+        <parameters>
+          <parameter name="distance"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">pointer to location for distance, or NULL</doc>
+            <type name="guint64" c:type="guint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="push" c:identifier="gst_adapter_push">
+        <doc xml:whitespace="preserve">Adds the data from @buf to the data stored inside @adapter and takes
+ownership of the buffer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buf" transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GstBuffer to add to queue in the adapter</doc>
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="take" c:identifier="gst_adapter_take">
+        <doc xml:whitespace="preserve">Returns a freshly allocated buffer containing the first @nbytes bytes of the
+Caller owns returned value. g_free after usage.
+#NULL if @nbytes bytes are not available</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">oven-fresh hot data, or</doc>
+          <array length="0" c:type="guint8*">
+            <type name="guint8" c:type="guint8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="nbytes"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">the number of bytes to take</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="take_buffer"
+              c:identifier="gst_adapter_take_buffer"
+              version="0.10.6">
+        <doc xml:whitespace="preserve">Returns a #GstBuffer containing the first @nbytes bytes of the
+This function is potentially more performant than gst_adapter_take()
+since it can reuse the memory in pushed buffers by subbuffering
+or merging.
+Caller owns returned value. gst_buffer_unref() after usage.
+the adapter, or #NULL if @nbytes bytes are not available</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GstBuffer containing the first @nbytes of</doc>
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="nbytes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes to take</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="take_list"
+              c:identifier="gst_adapter_take_list"
+              version="0.10.31">
+        <doc xml:whitespace="preserve">Returns a #GList of buffers containing the first @nbytes bytes of the
+When the caller can deal with individual buffers, this function is more
+performant because no memory should be copied.
+Caller owns returned list and contained buffers. gst_buffer_unref() each
+buffer in the list before freeing the list after usage.
+containing the first @nbytes of the adapter, or #NULL if @nbytes bytes
+are not available</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GList of buffers</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="Gst.Buffer"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="nbytes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes to take</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="buflist" readable="0" private="1">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="size" readable="0" private="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="skip" readable="0" private="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="assembled_data" readable="0" private="1">
+        <type name="guint8" c:type="guint8*"/>
+      </field>
+      <field name="assembled_size" readable="0" private="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="assembled_len" readable="0" private="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="buflist_end" readable="0" private="1">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="AdapterPrivate" c:type="GstAdapterPrivate*"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </class>
+    <record name="AdapterClass"
+            c:type="GstAdapterClass"
+            glib:is-gtype-struct-for="Adapter">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <record name="AdapterPrivate" c:type="GstAdapterPrivate" disguised="1">
+    </record>
+    <constant name="BASE_PARSE_FLAG_DRAINING" value="2">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="BASE_PARSE_FLAG_LOST_SYNC" value="1">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <constant name="BASE_TRANSFORM_SINK_NAME" value="sink">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <constant name="BASE_TRANSFORM_SRC_NAME" value="src">
+      <type name="utf8" c:type="gchar*"/>
+    </constant>
+    <class name="BaseParse"
+           c:symbol-prefix="base_parse"
+           c:type="GstBaseParse"
+           parent="Gst.Element"
+           abstract="1"
+           glib:type-name="GstBaseParse"
+           glib:get-type="gst_base_parse_get_type"
+           glib:type-struct="BaseParseClass">
+      <doc xml:whitespace="preserve">This base class is for parser elements that process data and splits it
+into separate audio/video/whatever frames.
+It provides for:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;provides one sink pad and one source pad&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;handles state changes&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;can operate in pull mode or push mode&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;handles seeking in both modes&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;handles events (NEWSEGMENT/EOS/FLUSH)&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+handles queries (POSITION/DURATION/SEEKING/FORMAT/CONVERT)
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;handles flushing&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+The purpose of this base class is to provide the basic functionality of
+a parser and share a lot of rather complex code.
+Description of the parsing mechanism:
+&lt;orderedlist&gt;
+&lt;listitem&gt;
+&lt;itemizedlist&gt;&lt;title&gt;Set-up phase&lt;/title&gt;
+&lt;listitem&gt;&lt;para&gt;
+GstBaseParse class calls @set_sink_caps to inform the subclass about
+incoming sinkpad caps. Subclass should set the srcpad caps accordingly.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+GstBaseParse calls @start to inform subclass that data processing is
+about to start now.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+At least at this point subclass needs to tell the GstBaseParse class
+how big data chunks it wants to receive (min_frame_size). It can do
+this with gst_base_parse_set_min_frame_size().
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+GstBaseParse class sets up appropriate data passing mode (pull/push)
+and starts to process the data.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;itemizedlist&gt;
+&lt;title&gt;Parsing phase&lt;/title&gt;
+&lt;listitem&gt;&lt;para&gt;
+GstBaseParse gathers at least min_frame_size bytes of data either
+by pulling it from upstream or collecting buffers in an internal
+#GstAdapter.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+A buffer of (at least) min_frame_size bytes is passed to subclass with
+if the buffer contains a valid frame. It also needs to set the
+contain a valid frame, this call must return FALSE and optionally
+set the @skipsize value to inform base class that how many bytes
+it needs to skip in order to find a valid frame. @framesize can always
+indicate a new minimum for current frame parsing.  The passed buffer
+is read-only.  Note that @check_valid_frame might receive any small
+amount of input data when leftover data is being drained (e.g. at EOS).
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+After valid frame is found, it will be passed again to subclass with
+frame contents and setting the caps, and buffer metadata (e.g.
+buffer timestamp and duration, or keyframe if applicable).
+(although the latter can also be done by GstBaseParse if it is
+appropriately configured, see below).  Frame is provided with
+timestamp derived from upstream (as much as generally possible),
+duration obtained from configuration (see below), and offset
+if meaningful (in pull mode).
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Finally the buffer can be pushed downstream and the parsing loop starts
+over again.  Just prior to actually pushing the buffer in question,
+it is passed to @pre_push_buffer which gives subclass yet one
+last chance to examine buffer metadata, or to send some custom (tag)
+events, or to perform custom (segment) filtering.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+During the parsing process GstBaseParseClass will handle both srcpad
+and sinkpad events. They will be passed to subclass if @event or
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;itemizedlist&gt;&lt;title&gt;Shutdown phase&lt;/title&gt;
+&lt;listitem&gt;&lt;para&gt;
+GstBaseParse class calls @stop to inform the subclass that data
+parsing will be stopped.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;/listitem&gt;
+&lt;/orderedlist&gt;
+Subclass is responsible for providing pad template caps for
+source and sink pads. The pads need to be named "sink" and "src". It also
+needs to set the fixed caps on srcpad, when the format is ensured (e.g.
+when base class calls subclass' @set_sink_caps function).
+This base class uses #GST_FORMAT_DEFAULT as a meaning of frames. So,
+subclass conversion routine needs to know that conversion from
+#GST_FORMAT_TIME to #GST_FORMAT_DEFAULT must return the
+frame number that can be found from the given byte position.
+GstBaseParse uses subclasses conversion methods also for seeking (or
+otherwise uses its own default one, see also below).
+Subclass @start and @stop functions will be called to inform the beginning
+and end of data processing.
+Things that subclass need to take care of:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;Provide pad templates&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Fixate the source pad caps when appropriate
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Inform base class how big data chunks should be retrieved. This is
+done with gst_base_parse_set_min_frame_size() function.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Examine data chunks passed to subclass with @check_valid_frame
+and tell if they contain a valid frame
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Set the caps and timestamp to frame that is passed to subclass with
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;Provide conversion functions&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Update the duration information with gst_base_parse_set_duration()
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Optionally passthrough using gst_base_parse_set_passthrough()
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Configure various baseparse parameters using
+gst_base_parse_set_average_bitrate(), gst_base_parse_set_syncable()
+and gst_base_parse_set_frame_rate().
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+In particular, if subclass is unable to determine a duration, but
+parsing (or specs) yields a frames per seconds rate, then this can be
+provided to GstBaseParse to enable it to cater for
+buffer time metadata (which will be taken from upstream as much as
+possible). Internally keeping track of frame durations and respective
+sizes that have been pushed provides GstBaseParse with an estimated
+bitrate. A default @convert (used if not overriden) will then use these
+rates to perform obvious conversions.  These rates are also used to
+update (estimated) duration at regular frame intervals.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;</doc>
+      <virtual-method name="check_valid_frame">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="frame" transfer-ownership="none">
+            <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
+          </parameter>
+          <parameter name="framesize" transfer-ownership="none">
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+          <parameter name="skipsize" transfer-ownership="none">
+            <type name="gint" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="convert">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="src_format" transfer-ownership="none">
+            <type name="Gst.Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="src_value" transfer-ownership="none">
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="dest_format" transfer-ownership="none">
+            <type name="Gst.Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="dest_value" transfer-ownership="none">
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="event">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gst.Event" c:type="GstEvent*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="parse_frame">
+        <return-value transfer-ownership="none">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="frame" transfer-ownership="none">
+            <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="pre_push_frame">
+        <return-value transfer-ownership="none">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="frame" transfer-ownership="none">
+            <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_sink_caps">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="src_event">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gst.Event" c:type="GstEvent*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="start">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="stop">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <method name="add_index_entry"
+              c:identifier="gst_base_parse_add_index_entry"
+              version="0.10.33">
+        <doc xml:whitespace="preserve">Adds an entry to the index associating @offset to @ts.  It is recommended
+to only add keyframe entries.  @force allows to bypass checks, such as
+whether the stream is (upstream) seekable, another entry is already "close"
+to the new entry, etc.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">#gboolean indicating whether entry was added</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">offset of entry</doc>
+            <type name="guint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="ts" transfer-ownership="none">
+            <doc xml:whitespace="preserve">timestamp associated with offset</doc>
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether entry refers to keyframe</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="force" transfer-ownership="none">
+            <doc xml:whitespace="preserve">add entry disregarding sanity checks</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="convert_default"
+              c:identifier="gst_base_parse_convert_default"
+              version="0.10.33">
+        <doc xml:whitespace="preserve">Default implementation of "convert" vmethod in #GstBaseParse class.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if conversion was successful.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="src_format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#GstFormat describing the source format.</doc>
+            <type name="Gst.Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="src_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Source value to be converted.</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="dest_format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#GstFormat defining the converted format.</doc>
+            <type name="Gst.Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="dest_value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer where the conversion result will be put.</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="push_frame"
+              c:identifier="gst_base_parse_push_frame"
+              version="0.10.33">
+        <doc xml:whitespace="preserve">Pushes the frame downstream, sends any pending events and
+does some timestamp and segment handling. Takes ownership
+of @frame and will clear it (if it was initialised with
+gst_base_parse_frame_init()) or free it.
+This must be called with sinkpad STREAM_LOCK held.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">#GstFlowReturn</doc>
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="frame" transfer-ownership="full">
+            <doc xml:whitespace="preserve">a #GstBaseParseFrame</doc>
+            <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_average_bitrate"
+              c:identifier="gst_base_parse_set_average_bitrate"
+              version="0.10.33">
+        <doc xml:whitespace="preserve">Optionally sets the average bitrate detected in media (if non-zero),
+e.g. based on metadata, as it will be posted to the application.
+By default, announced average bitrate is estimated. The average bitrate
+is used to estimate the total duration of the stream and to estimate
+a seek position, if there's no index and the format is syncable
+(see gst_base_parse_set_syncable()).</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="bitrate" transfer-ownership="none">
+            <doc xml:whitespace="preserve">average bitrate in bits/second</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_duration"
+              c:identifier="gst_base_parse_set_duration"
+              version="0.10.33">
+        <doc xml:whitespace="preserve">Sets the duration of the currently playing media. Subclass can use this
+when it is able to determine duration and/or notices a change in the media
+duration.  Alternatively, if @interval is non-zero (default), then stream
+duration is determined based on estimated bitrate, and updated every @interval
+frames.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fmt" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#GstFormat.</doc>
+            <type name="Gst.Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="duration" transfer-ownership="none">
+            <doc xml:whitespace="preserve">duration value.</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="interval" transfer-ownership="none">
+            <doc xml:whitespace="preserve">how often to update the duration estimate based on bitrate, or 0.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_frame_rate"
+              c:identifier="gst_base_parse_set_frame_rate"
+              version="0.10.33">
+        <doc xml:whitespace="preserve">If frames per second is configured, parser can take care of buffer duration
+and timestamping.  When performing segment clipping, or seeking to a specific
+location, a corresponding decoder might need an initial @lead_in and a
+following @lead_out number of frames to ensure the desired segment is
+entirely filled upon decoding.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fps_num" transfer-ownership="none">
+            <doc xml:whitespace="preserve">frames per second (numerator).</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="fps_den" transfer-ownership="none">
+            <doc xml:whitespace="preserve">frames per second (denominator).</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="lead_in" transfer-ownership="none">
+            <doc xml:whitespace="preserve">frames needed before a segment for subsequent decode</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="lead_out" transfer-ownership="none">
+            <doc xml:whitespace="preserve">frames needed after a segment</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_has_timing_info"
+              c:identifier="gst_base_parse_set_has_timing_info"
+              version="0.10.33">
+        <doc xml:whitespace="preserve">Set if frames carry timing information which the subclass can (generally)
+parse and provide.  In particular, intrinsic (rather than estimated) time
+can be obtained following a seek.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="has_timing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">whether frames carry timing information</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_min_frame_size"
+              c:identifier="gst_base_parse_set_min_frame_size"
+              version="0.10.33">
+        <doc xml:whitespace="preserve">Subclass can use this function to tell the base class that it needs to
+give at least #min_size buffers.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min_size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Minimum size of the data that this base class should give to subclass.</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_passthrough"
+              c:identifier="gst_base_parse_set_passthrough"
+              version="0.10.33">
+        <doc xml:whitespace="preserve">Set if the nature of the format or configuration does not allow (much)
+parsing, and the parser should operate in passthrough mode (which only
+applies when operating in push mode). That is, incoming buffers are
+pushed through unmodified, i.e. no @check_valid_frame or @parse_frame
+callbacks will be invoked, but @pre_push_buffer will still be invoked,
+so subclass can perform as much or as little is appropriate for
+passthrough semantics in @pre_push_buffer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="passthrough" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%TRUE if parser should run in passthrough mode</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_syncable"
+              c:identifier="gst_base_parse_set_syncable"
+              version="0.10.33">
+        <doc xml:whitespace="preserve">Set if frame starts can be identified. This is set by default and
+determines whether seeking based on bitrate averages
+is possible for a format/stream.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="syncable" transfer-ownership="none">
+            <doc xml:whitespace="preserve">set if frame starts can be identified</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="element">
+        <type name="Gst.Element" c:type="GstElement"/>
+      </field>
+      <field name="sinkpad">
+        <type name="Gst.Pad" c:type="GstPad*"/>
+      </field>
+      <field name="srcpad">
+        <type name="Gst.Pad" c:type="GstPad*"/>
+      </field>
+      <field name="flags">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="segment">
+        <type name="Gst.Segment" c:type="GstSegment"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="20">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="BaseParsePrivate" c:type="GstBaseParsePrivate*"/>
+      </field>
+    </class>
+    <record name="BaseParseClass"
+            c:type="GstBaseParseClass"
+            glib:is-gtype-struct-for="BaseParse">
+      <doc xml:whitespace="preserve">Subclasses can override any of the available virtual methods or not, as
+needed. At minimum @check_valid_frame and @parse_frame needs to be
+overridden.</doc>
+      <field name="parent_class">
+        <type name="Gst.ElementClass" c:type="GstElementClass"/>
+      </field>
+      <field name="start">
+        <callback name="start">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="parse" transfer-ownership="none">
+              <type name="BaseParse" c:type="GstBaseParse*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="stop">
+        <callback name="stop">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="parse" transfer-ownership="none">
+              <type name="BaseParse" c:type="GstBaseParse*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_sink_caps">
+        <callback name="set_sink_caps">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="parse" transfer-ownership="none">
+              <type name="BaseParse" c:type="GstBaseParse*"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="check_valid_frame">
+        <callback name="check_valid_frame">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="parse" transfer-ownership="none">
+              <type name="BaseParse" c:type="GstBaseParse*"/>
+            </parameter>
+            <parameter name="frame" transfer-ownership="none">
+              <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
+            </parameter>
+            <parameter name="framesize" transfer-ownership="none">
+              <type name="guint" c:type="guint*"/>
+            </parameter>
+            <parameter name="skipsize" transfer-ownership="none">
+              <type name="gint" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="parse_frame">
+        <callback name="parse_frame">
+          <return-value transfer-ownership="none">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="parse" transfer-ownership="none">
+              <type name="BaseParse" c:type="GstBaseParse*"/>
+            </parameter>
+            <parameter name="frame" transfer-ownership="none">
+              <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pre_push_frame">
+        <callback name="pre_push_frame">
+          <return-value transfer-ownership="none">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="parse" transfer-ownership="none">
+              <type name="BaseParse" c:type="GstBaseParse*"/>
+            </parameter>
+            <parameter name="frame" transfer-ownership="none">
+              <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="convert">
+        <callback name="convert">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="parse" transfer-ownership="none">
+              <type name="BaseParse" c:type="GstBaseParse*"/>
+            </parameter>
+            <parameter name="src_format" transfer-ownership="none">
+              <type name="Gst.Format" c:type="GstFormat"/>
+            </parameter>
+            <parameter name="src_value" transfer-ownership="none">
+              <type name="gint64" c:type="gint64"/>
+            </parameter>
+            <parameter name="dest_format" transfer-ownership="none">
+              <type name="Gst.Format" c:type="GstFormat"/>
+            </parameter>
+            <parameter name="dest_value" transfer-ownership="none">
+              <type name="gint64" c:type="gint64*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="event">
+        <callback name="event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="parse" transfer-ownership="none">
+              <type name="BaseParse" c:type="GstBaseParse*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gst.Event" c:type="GstEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="src_event">
+        <callback name="src_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="parse" transfer-ownership="none">
+              <type name="BaseParse" c:type="GstBaseParse*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gst.Event" c:type="GstEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="20">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <record name="BaseParseFrame"
+            c:type="GstBaseParseFrame"
+            version="0.10.33"
+            glib:type-name="GstBaseParseFrame"
+            glib:get-type="gst_base_parse_frame_get_type"
+            c:symbol-prefix="base_parse_frame">
+      <doc xml:whitespace="preserve">Frame (context) data passed to each frame parsing virtual methods.  In
+addition to providing the data to be checked for a valid frame or an already
+identified frame, it conveys additional metadata or control information
+from and to the subclass w.r.t. the particular frame in question (rather
+than global parameters).  Some of these may apply to each parsing stage, others
+only to some a particular one.  These parameters are effectively zeroed at start
+of each frame's processing, i.e. parsing virtual method invocation sequence.</doc>
+      <field name="buffer" writable="1">
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="overhead" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="_gst_reserved_i" readable="0" private="1">
+        <array zero-terminated="0" c:type="guint" fixed-size="2">
+          <type name="guint" c:type="guint"/>
+        </array>
+      </field>
+      <field name="_gst_reserved_p" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+      <field name="_private_flags" readable="0" private="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_base_parse_frame_new"
+                   version="0.10.33">
+        <doc xml:whitespace="preserve">Allocates a new #GstBaseParseFrame. This function is mainly for bindings,
+elements written in C should usually allocate the frame on the stack and
+then use gst_base_parse_frame_init() to initialise it.
+gst_base_parse_frame_free() when no longer needed, unless you gave
+away ownership to gst_base_parse_push_frame().</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a newly-allocated #GstBaseParseFrame. Free with</doc>
+          <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstBuffer</doc>
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the flags</doc>
+            <type name="BaseParseFrameFlags" c:type="GstBaseParseFrameFlags"/>
+          </parameter>
+          <parameter name="overhead" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of bytes in this frame which should be counted as metadata overhead, ie. not used to calculate the average bitrate. Set to -1 to mark the entire frame as metadata. If in doubt, set to 0.</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="free" c:identifier="gst_base_parse_frame_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="init"
+              c:identifier="gst_base_parse_frame_init"
+              version="0.10.33">
+        <doc xml:whitespace="preserve">Sets a #GstBaseParseFrame to initial state.  Currently this means
+all public fields are zero-ed and a private flag is set to make
+sure gst_base_parse_frame_free() only frees the contents but not
+the actual frame. Use this function to initialise a #GstBaseParseFrame
+allocated on the stack.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <bitfield name="BaseParseFrameFlags"
+              version="0.10.33"
+              c:type="GstBaseParseFrameFlags">
+      <doc xml:whitespace="preserve">Flags to be used in a #GstBaseParseFrame.</doc>
+      <member name="none"
+              value="0"
+              c:identifier="GST_BASE_PARSE_FRAME_FLAG_NONE"/>
+      <member name="no_frame"
+              value="1"
+              c:identifier="GST_BASE_PARSE_FRAME_FLAG_NO_FRAME"/>
+      <member name="clip"
+              value="2"
+              c:identifier="GST_BASE_PARSE_FRAME_FLAG_CLIP"/>
+    </bitfield>
+    <record name="BaseParsePrivate" c:type="GstBaseParsePrivate" disguised="1">
+    </record>
+    <class name="BaseSink"
+           c:symbol-prefix="base_sink"
+           c:type="GstBaseSink"
+           parent="Gst.Element"
+           abstract="1"
+           glib:type-name="GstBaseSink"
+           glib:get-type="gst_base_sink_get_type"
+           glib:type-struct="BaseSinkClass">
+      <doc xml:whitespace="preserve">#GstBaseSink is the base class for sink elements in GStreamer, such as
+xvimagesink or filesink. It is a layer on top of #GstElement that provides a
+simplified interface to plugin writers. #GstBaseSink handles many details
+activation in push or pull mode, and queries.
+In most cases, when writing sink elements, there is no need to implement
+class methods from #GstElement or to set functions on pads, because the
+#GstBaseSink infrastructure should be sufficient.
+#GstBaseSink provides support for exactly one sink pad, which should be
+named "sink". A sink implementation (subclass of #GstBaseSink) should
+install a pad template in its base_init function, like so:
+|[
+static void
+my_element_base_init (gpointer g_class)
+{
+GstElementClass *gstelement_class = GST_ELEMENT_CLASS (g_class);
+// sinktemplate should be a #GstStaticPadTemplate with direction
+// #GST_PAD_SINK and name "sink"
+gst_element_class_add_pad_template (gstelement_class,
+gst_static_pad_template_get (&amp;amp;sinktemplate));
+// see #GstElementDetails
+gst_element_class_set_details (gstelement_class, &amp;amp;details);
+}
+]|
+#GstBaseSink will handle the prerolling correctly. This means that it will
+return #GST_STATE_CHANGE_ASYNC from a state change to PAUSED until the first
+buffer arrives in this element. The base class will call the
+#GstBaseSinkClass.preroll() vmethod with this preroll buffer and will then
+commit the state change to the next asynchronously pending state.
+When the element is set to PLAYING, #GstBaseSink will synchronise on the
+clock using the times returned from #GstBaseSinkClass.get_times(). If this
+function returns #GST_CLOCK_TIME_NONE for the start time, no synchronisation
+will be done. Synchronisation can be disabled entirely by setting the object
+#GstBaseSink:sync property to %FALSE.
+After synchronisation the virtual method #GstBaseSinkClass.render() will be
+called. Subclasses should minimally implement this method.
+Since 0.10.3 subclasses that synchronise on the clock in the
+#GstBaseSinkClass.render() method are supported as well. These classes
+typically receive a buffer in the render method and can then potentially
+block on the clock while rendering. A typical example is an audiosink.
+Since 0.10.11 these subclasses can use gst_base_sink_wait_preroll() to
+perform the blocking wait.
+Upon receiving the EOS event in the PLAYING state, #GstBaseSink will wait
+for the clock to reach the time indicated by the stop time of the last
+#GstBaseSinkClass.get_times() call before posting an EOS message. When the
+element receives EOS in PAUSED, preroll completes, the event is queued and an
+EOS message is posted when going to PLAYING.
+#GstBaseSink will internally use the #GST_EVENT_NEWSEGMENT events to schedule
+synchronisation and clipping of buffers. Buffers that fall completely outside
+of the current segment are dropped. Buffers that fall partially in the
+segment are rendered (and prerolled). Subclasses should do any subbuffer
+clipping themselves when needed.
+#GstBaseSink will by default report the current playback position in
+#GST_FORMAT_TIME based on the current clock time and segment information.
+If no clock has been set on the element, the query will be forwarded
+upstream.
+The #GstBaseSinkClass.set_caps() function will be called when the subclass
+should configure itself to process a specific media type.
+The #GstBaseSinkClass.start() and #GstBaseSinkClass.stop() virtual methods
+will be called when resources should be allocated. Any 
+#GstBaseSinkClass.preroll(), #GstBaseSinkClass.render() and
+#GstBaseSinkClass.set_caps() function will be called between the
+#GstBaseSinkClass.start() and #GstBaseSinkClass.stop() calls.
+The #GstBaseSinkClass.event() virtual method will be called when an event is
+received by #GstBaseSink. Normally this method should only be overriden by
+very specific elements (such as file sinks) which need to handle the
+newsegment event specially.
+#GstBaseSink provides an overridable #GstBaseSinkClass.buffer_alloc()
+function that can be used by sinks that want to do reverse negotiation or to
+provide custom buffers (hardware buffers for example) to upstream elements.
+The #GstBaseSinkClass.unlock() method is called when the elements should
+unblock any blocking operations they perform in the
+#GstBaseSinkClass.render() method. This is mostly useful when the
+#GstBaseSinkClass.render() method performs a blocking write on a file
+descriptor, for example.
+The #GstBaseSink:max-lateness property affects how the sink deals with
+buffers that arrive too late in the sink. A buffer arrives too late in the
+sink when the presentation time (as a combination of the last segment, buffer
+timestamp and element base_time) plus the duration is before the current
+time of the clock.
+If the frame is later than max-lateness, the sink will drop the buffer
+without calling the render method.
+This feature is disabled if sync is disabled, the
+#GstBaseSinkClass.get_times() method does not return a valid start time or
+max-lateness is set to -1 (the default).
+Subclasses can use gst_base_sink_set_max_lateness() to configure the
+max-lateness value.
+The #GstBaseSink:qos property will enable the quality-of-service features of
+the basesink which gather statistics about the real-time performance of the
+clock synchronisation. For each buffer received in the sink, statistics are
+gathered and a QOS event is sent upstream with these numbers. This
+information can then be used by upstream elements to reduce their processing
+rate, for example.
+Since 0.10.15 the #GstBaseSink:async property can be used to instruct the
+sink to never perform an ASYNC state change. This feature is mostly usable
+when dealing with non-synchronized streams or sparse streams.
+Last reviewed on 2007-08-29 (0.10.15)</doc>
+      <virtual-method name="activate_pull">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="active" transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="async_play">
+        <return-value transfer-ownership="none">
+          <type name="Gst.StateChangeReturn" c:type="GstStateChangeReturn"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="buffer_alloc">
+        <return-value transfer-ownership="none">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="guint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+          <parameter name="buf" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer**"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="event">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gst.Event" c:type="GstEvent*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="fixate">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_caps">
+        <return-value transfer-ownership="full">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_times">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+          <parameter name="end" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="preroll">
+        <return-value transfer-ownership="none">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="render">
+        <return-value transfer-ownership="none">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="render_list">
+        <return-value transfer-ownership="none">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer_list" transfer-ownership="none">
+            <type name="Gst.BufferList" c:type="GstBufferList*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_caps">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="start">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="stop">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="unlock">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="unlock_stop">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <method name="do_preroll"
+              c:identifier="gst_base_sink_do_preroll"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">If the @sink spawns its own thread for pulling buffers from upstream it
+should call this method after it has pulled a buffer. If the element needed
+to preroll, this function will perform the preroll and will then block
+until the element state is changed.
+This function should be called with the PREROLL_LOCK held.
+continue. Any other return value should be returned from the render vmethod.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">#GST_FLOW_OK if the preroll completed and processing can</doc>
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="obj" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the mini object that caused the preroll</doc>
+            <type name="Gst.MiniObject" c:type="GstMiniObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_blocksize"
+              c:identifier="gst_base_sink_get_blocksize"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Get the number of bytes that the sink will pull when it is operating in pull
+mode.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of bytes @sink will pull in pull mode.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_last_buffer"
+              c:identifier="gst_base_sink_get_last_buffer"
+              version="0.10.15">
+        <doc xml:whitespace="preserve">Get the last buffer that arrived in the sink and was used for preroll or for
+rendering. This property can be used to generate thumbnails.
+The #GstCaps on the buffer can be used to determine the type of the buffer.
+This function returns NULL when no buffer has arrived in the sink yet
+or when the sink is not in PAUSED or PLAYING.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GstBuffer. gst_buffer_unref() after usage.</doc>
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </return-value>
+      </method>
+      <method name="get_latency"
+              c:identifier="gst_base_sink_get_latency"
+              version="0.10.12">
+        <doc xml:whitespace="preserve">Get the currently configured latency.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The configured latency.</doc>
+          <type name="Gst.ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="get_max_lateness"
+              c:identifier="gst_base_sink_get_max_lateness"
+              version="0.10.4">
+        <doc xml:whitespace="preserve">Gets the max lateness value. See gst_base_sink_set_max_lateness for
+more details.
+before it is dropped and not rendered. A value of -1 means an
+unlimited time.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The maximum time in nanoseconds that a buffer can be late</doc>
+          <type name="gint64" c:type="gint64"/>
+        </return-value>
+      </method>
+      <method name="get_render_delay"
+              c:identifier="gst_base_sink_get_render_delay"
+              version="0.10.21">
+        <doc xml:whitespace="preserve">Get the render delay of @sink. see gst_base_sink_set_render_delay() for more
+information about the render delay.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the render delay of @sink.</doc>
+          <type name="Gst.ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="get_sync"
+              c:identifier="gst_base_sink_get_sync"
+              version="0.10.4">
+        <doc xml:whitespace="preserve">Checks if @sink is currently configured to synchronize against the
+clock.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the sink is configured to synchronize against the clock.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_throttle_time"
+              c:identifier="gst_base_sink_get_throttle_time"
+              version="0.10.33">
+        <doc xml:whitespace="preserve">Get the time that will be inserted between frames to control the 
+maximum buffers per second.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of nanoseconds @sink will put between frames.</doc>
+          <type name="guint64" c:type="guint64"/>
+        </return-value>
+      </method>
+      <method name="get_ts_offset"
+              c:identifier="gst_base_sink_get_ts_offset"
+              version="0.10.15">
+        <doc xml:whitespace="preserve">Get the synchronisation offset of @sink.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The synchronisation offset.</doc>
+          <type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff"/>
+        </return-value>
+      </method>
+      <method name="is_async_enabled"
+              c:identifier="gst_base_sink_is_async_enabled"
+              version="0.10.15">
+        <doc xml:whitespace="preserve">Checks if @sink is currently configured to perform asynchronous state
+changes to PAUSED.
+changes.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the sink is configured to perform asynchronous state</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_last_buffer_enabled"
+              c:identifier="gst_base_sink_is_last_buffer_enabled"
+              version="0.10.30">
+        <doc xml:whitespace="preserve">Checks if @sink is currently configured to store the last received buffer in
+the last-buffer property.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the sink is configured to store the last received buffer.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_qos_enabled"
+              c:identifier="gst_base_sink_is_qos_enabled"
+              version="0.10.5">
+        <doc xml:whitespace="preserve">Checks if @sink is currently configured to send Quality-of-Service events
+upstream.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the sink is configured to perform Quality-of-Service.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="query_latency"
+              c:identifier="gst_base_sink_query_latency"
+              version="0.10.12">
+        <doc xml:whitespace="preserve">Query the sink for the latency parameters. The latency will be queried from
+the upstream elements. @live will be TRUE if @sink is configured to
+synchronize against the clock. @upstream_live will be TRUE if an upstream
+element is live.
+If both @live and @upstream_live are TRUE, the sink will want to compensate
+for the latency introduced by the upstream elements by setting the
+This function is mostly used by subclasses.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the query succeeded.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="live"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">if the sink is live</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="upstream_live"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">if an upstream element is live</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="min_latency"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the min latency of the upstream elements</doc>
+            <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+          <parameter name="max_latency"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the max latency of the upstream elements</doc>
+            <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_async_enabled"
+              c:identifier="gst_base_sink_set_async_enabled"
+              version="0.10.15">
+        <doc xml:whitespace="preserve">Configures @sink to perform all state changes asynchronusly. When async is
+disabled, the sink will immediatly go to PAUSED instead of waiting for a
+preroll buffer. This feature is usefull if the sink does not synchronize
+against the clock or when it is dealing with sparse streams.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="enabled" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new async value.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_blocksize"
+              c:identifier="gst_base_sink_set_blocksize"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Set the number of bytes that the sink will pull when it is operating in pull
+mode.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="blocksize" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the blocksize in bytes</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_last_buffer_enabled"
+              c:identifier="gst_base_sink_set_last_buffer_enabled"
+              version="0.10.30">
+        <doc xml:whitespace="preserve">Configures @sink to store the last received buffer in the last-buffer
+property.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="enabled" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new enable-last-buffer value.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_max_lateness"
+              c:identifier="gst_base_sink_set_max_lateness"
+              version="0.10.4">
+        <doc xml:whitespace="preserve">Sets the new max lateness value to @max_lateness. This value is
+used to decide if a buffer should be dropped or not based on the
+buffer timestamp and the current clock time. A value of -1 means
+an unlimited time.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="max_lateness" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new max lateness value.</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_qos_enabled"
+              c:identifier="gst_base_sink_set_qos_enabled"
+              version="0.10.5">
+        <doc xml:whitespace="preserve">Configures @sink to send Quality-of-Service events upstream.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="enabled" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new qos value.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_render_delay"
+              c:identifier="gst_base_sink_set_render_delay"
+              version="0.10.21">
+        <doc xml:whitespace="preserve">Set the render delay in @sink to @delay. The render delay is the time
+between actual rendering of a buffer and its synchronisation time. Some
+devices might delay media rendering which can be compensated for with this
+function.
+After calling this function, this sink will report additional latency and
+other sinks will adjust their latency to delay the rendering of their media.
+This function is usually called by subclasses.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="delay" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new delay</doc>
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sync"
+              c:identifier="gst_base_sink_set_sync"
+              version="0.10.4">
+        <doc xml:whitespace="preserve">Configures @sink to synchronize on the clock or not. When
+possible. If @sync is TRUE, the timestamps of the incomming
+buffers will be used to schedule the exact render time of its
+contents.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sync" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new sync value.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_throttle_time"
+              c:identifier="gst_base_sink_set_throttle_time"
+              version="0.10.33">
+        <doc xml:whitespace="preserve">Set the time that will be inserted between rendered buffers. This
+can be used to control the maximum buffers per second that the sink
+will render.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="throttle" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the throttle time in nanoseconds</doc>
+            <type name="guint64" c:type="guint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_ts_offset"
+              c:identifier="gst_base_sink_set_ts_offset"
+              version="0.10.15">
+        <doc xml:whitespace="preserve">Adjust the synchronisation of @sink with @offset. A negative value will
+render buffers earlier than their timestamp. A positive value will delay
+rendering. This function can be used to fix playback of badly timestamped
+buffers.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new offset</doc>
+            <type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="wait_clock"
+              c:identifier="gst_base_sink_wait_clock"
+              version="0.10.20">
+        <doc xml:whitespace="preserve">This function will block until @time is reached. It is usually called by
+subclasses that use their own internal synchronisation.
+If @time is not valid, no sycnhronisation is done and #GST_CLOCK_BADTIME is
+returned. Likewise, if synchronisation is disabled in the element or there
+is no clock, no synchronisation is done and #GST_CLOCK_BADTIME is returned.
+This function should only be called with the PREROLL_LOCK held, like when
+receiving an EOS event in the #GstBaseSinkClass.event() vmethod or when
+receiving a buffer in
+the #GstBaseSinkClass.render() vmethod.
+The @time argument should be the running_time of when this method should
+return and is not adjusted with any latency or offset configured in the
+sink.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">#GstClockReturn</doc>
+          <type name="Gst.ClockReturn" c:type="GstClockReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="time" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the running_time to be reached</doc>
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="jitter"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the jitter to be filled with time diff, or NULL</doc>
+            <type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="wait_eos"
+              c:identifier="gst_base_sink_wait_eos"
+              version="0.10.15">
+        <doc xml:whitespace="preserve">This function will block until @time is reached. It is usually called by
+subclasses that use their own internal synchronisation but want to let the
+EOS be handled by the base class.
+This function should only be called with the PREROLL_LOCK held, like when
+receiving an EOS event in the ::event vmethod.
+The @time argument should be the running_time of when the EOS should happen
+and will be adjusted with any latency and offset configured in the sink.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">#GstFlowReturn</doc>
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="time" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the running_time to be reached</doc>
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="jitter"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the jitter to be filled with time diff, or NULL</doc>
+            <type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="wait_preroll"
+              c:identifier="gst_base_sink_wait_preroll"
+              version="0.10.11">
+        <doc xml:whitespace="preserve">If the #GstBaseSinkClass.render() method performs its own synchronisation
+against the clock it must unblock when going from PLAYING to the PAUSED state
+and call this method before continuing to render the remaining data.
+This function will block until a state change to PLAYING happens (in which
+case this function returns #GST_FLOW_OK) or the processing must be stopped due
+to a state change to READY or a FLUSH event (in which case this function
+returns #GST_FLOW_WRONG_STATE).
+This function should only be called with the PREROLL_LOCK held, like in the
+render function.
+continue. Any other return value should be returned from the render vmethod.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">#GST_FLOW_OK if the preroll completed and processing can</doc>
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+      </method>
+      <property name="async"
+                version="0.10.15"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">If set to #TRUE, the basesink will perform asynchronous state changes.
+When set to #FALSE, the sink will not signal the parent when it prerolls.
+Use this option when dealing with sparse streams or when synchronisation is
+not required.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="blocksize"
+                version="0.10.22"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The amount of bytes to pull when operating in pull mode.</doc>
+        <type name="guint"/>
+      </property>
+      <property name="enable-last-buffer"
+                version="0.10.30"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Enable the last-buffer property. If FALSE, basesink doesn't keep a
+reference to the last buffer arrived and the last-buffer property is always
+set to NULL. This can be useful if you need buffers to be released as soon
+as possible, eg. if you're using a buffer pool.</doc>
+        <type name="gboolean"/>
+      </property>
+      <property name="last-buffer" version="0.10.15" transfer-ownership="none">
+        <doc xml:whitespace="preserve">The last buffer that arrived in the sink and was used for preroll or for
+rendering. This property can be used to generate thumbnails. This property
+can be NULL when the sink has not yet received a bufer.</doc>
+        <type name="Gst.Buffer"/>
+      </property>
+      <property name="max-lateness" writable="1" transfer-ownership="none">
+        <type name="gint64"/>
+      </property>
+      <property name="preroll-queue-len"
+                writable="1"
+                construct="1"
+                transfer-ownership="none">
+        <type name="guint"/>
+      </property>
+      <property name="qos" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="render-delay"
+                version="0.10.22"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The additional delay between synchronisation and actual rendering of the
+media. This property will add additional latency to the device in order to
+make other sinks compensate for the delay.</doc>
+        <type name="guint64"/>
+      </property>
+      <property name="sync" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="throttle-time"
+                version="0.10.33"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">The time to insert between buffers. This property can be used to control
+the maximum amount of buffers per second to render. Setting this property
+to a value bigger than 0 will make the sink create THROTTLE QoS events.</doc>
+        <type name="guint64"/>
+      </property>
+      <property name="ts-offset"
+                version="0.10.15"
+                writable="1"
+                transfer-ownership="none">
+        <doc xml:whitespace="preserve">Controls the final synchronisation, a negative value will render the buffer
+earlier while a positive value delays playback. This property can be
+used to fix synchronisation in bad files.</doc>
+        <type name="gint64"/>
+      </property>
+      <field name="element">
+        <type name="Gst.Element" c:type="GstElement"/>
+      </field>
+      <field name="sinkpad">
+        <type name="Gst.Pad" c:type="GstPad*"/>
+      </field>
+      <field name="pad_mode">
+        <type name="Gst.ActivateMode" c:type="GstActivateMode"/>
+      </field>
+      <field name="offset">
+        <type name="guint64" c:type="guint64"/>
+      </field>
+      <field name="can_activate_pull">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="can_activate_push">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="preroll_queue">
+        <type name="GLib.Queue" c:type="GQueue*"/>
+      </field>
+      <field name="preroll_queue_max_len">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="preroll_queued">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="buffers_queued">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="events_queued">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="eos">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="eos_queued">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="need_preroll">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="have_preroll">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="playing_async">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="have_newsegment">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="segment">
+        <type name="Gst.Segment" c:type="GstSegment"/>
+      </field>
+      <field name="clock_id" readable="0" private="1">
+        <type name="Gst.ClockID" c:type="GstClockID"/>
+      </field>
+      <field name="end_time" readable="0" private="1">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="sync" readable="0" private="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="flushing" readable="0" private="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <union name="abidata" c:type="abidata">
+        <record name="ABI" c:type="ABI">
+          <field name="clip_segment" writable="1">
+            <type name="Gst.Segment" c:type="GstSegment*"/>
+          </field>
+          <field name="max_lateness" writable="1">
+            <type name="gint64" c:type="gint64"/>
+          </field>
+          <field name="running" writable="1">
+            <type name="gboolean" c:type="gboolean"/>
+          </field>
+        </record>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="gpointer" fixed-size="19">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </field>
+      </union>
+      <field name="priv">
+        <type name="BaseSinkPrivate" c:type="GstBaseSinkPrivate*"/>
+      </field>
+    </class>
+    <record name="BaseSinkClass"
+            c:type="GstBaseSinkClass"
+            glib:is-gtype-struct-for="BaseSink">
+      <doc xml:whitespace="preserve">Subclasses can override any of the available virtual methods or not, as
+needed. At the minimum, the @render method should be overridden to
+output/present buffers.</doc>
+      <field name="parent_class">
+        <type name="Gst.ElementClass" c:type="GstElementClass"/>
+      </field>
+      <field name="get_caps">
+        <callback name="get_caps">
+          <return-value transfer-ownership="full">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_caps">
+        <callback name="set_caps">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="buffer_alloc">
+        <callback name="buffer_alloc">
+          <return-value transfer-ownership="none">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+            <parameter name="offset" transfer-ownership="none">
+              <type name="guint64" c:type="guint64"/>
+            </parameter>
+            <parameter name="size" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer**"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_times">
+        <callback name="get_times">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+            <parameter name="start" transfer-ownership="none">
+              <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+            </parameter>
+            <parameter name="end" transfer-ownership="none">
+              <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="start">
+        <callback name="start">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="stop">
+        <callback name="stop">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unlock">
+        <callback name="unlock">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="event">
+        <callback name="event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gst.Event" c:type="GstEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="preroll">
+        <callback name="preroll">
+          <return-value transfer-ownership="none">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="render">
+        <callback name="render">
+          <return-value transfer-ownership="none">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="async_play">
+        <callback name="async_play">
+          <return-value transfer-ownership="none">
+            <type name="Gst.StateChangeReturn" c:type="GstStateChangeReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="activate_pull">
+        <callback name="activate_pull">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+            <parameter name="active" transfer-ownership="none">
+              <type name="gboolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="fixate">
+        <callback name="fixate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unlock_stop">
+        <callback name="unlock_stop">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="render_list">
+        <callback name="render_list">
+          <return-value transfer-ownership="none">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="sink" transfer-ownership="none">
+              <type name="BaseSink" c:type="GstBaseSink*"/>
+            </parameter>
+            <parameter name="buffer_list" transfer-ownership="none">
+              <type name="Gst.BufferList" c:type="GstBufferList*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="15">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <record name="BaseSinkPrivate" c:type="GstBaseSinkPrivate" disguised="1">
+    </record>
+    <class name="BaseSrc"
+           c:symbol-prefix="base_src"
+           c:type="GstBaseSrc"
+           parent="Gst.Element"
+           abstract="1"
+           glib:type-name="GstBaseSrc"
+           glib:get-type="gst_base_src_get_type"
+           glib:type-struct="BaseSrcClass">
+      <doc xml:whitespace="preserve">This is a generice base class for source elements. The following
+types of sources are supported:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;random access sources like files&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;seekable sources&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;live sources&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+The source can be configured to operate in any #GstFormat with the
+gst_base_src_set_format() method. The currently set format determines
+the format of the internal #GstSegment and any #GST_EVENT_NEWSEGMENT
+events. The default format for #GstBaseSrc is #GST_FORMAT_BYTES.
+#GstBaseSrc always supports push mode scheduling. If the following
+conditions are met, it also supports pull mode scheduling:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;The format is set to #GST_FORMAT_BYTES (default).&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;#GstBaseSrcClass.is_seekable() returns %TRUE.&lt;/para&gt;
+&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+Since 0.10.9, any #GstBaseSrc can enable pull based scheduling at any time
+by overriding #GstBaseSrcClass.check_get_range() so that it returns %TRUE.
+If all the conditions are met for operating in pull mode, #GstBaseSrc is
+automatically seekable in push mode as well. The following conditions must
+be met to make the element seekable in push mode when the format is not
+#GST_FORMAT_BYTES:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;
+#GstBaseSrcClass.is_seekable() returns %TRUE.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+#GstBaseSrcClass.query() can convert all supported seek formats to the
+internal format as set with gst_base_src_set_format().
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+#GstBaseSrcClass.do_seek() is implemented, performs the seek and returns
+%TRUE.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+When the element does not meet the requirements to operate in pull mode, the
+offset and length in the #GstBaseSrcClass.create() method should be ignored.
+It is recommended to subclass #GstPushSrc instead, in this situation. If the
+element can operate in pull mode but only with specific offsets and
+lengths, it is allowed to generate an error when the wrong values are passed
+to the #GstBaseSrcClass.create() function.
+#GstBaseSrc has support for live sources. Live sources are sources that when
+paused discard data, such as audio or video capture devices. A typical live
+source also produces data at a fixed rate and thus provides a clock to publish
+this rate.
+Use gst_base_src_set_live() to activate the live source mode.
+A live source does not produce data in the PAUSED state. This means that the
+#GstBaseSrcClass.create() method will not be called in PAUSED but only in
+PLAYING. To signal the pipeline that the element will not produce data, the
+return value from the READY to PAUSED state will be
+#GST_STATE_CHANGE_NO_PREROLL.
+A typical live source will timestamp the buffers it creates with the
+current running time of the pipeline. This is one reason why a live source
+can only produce data in the PLAYING state, when the clock is actually
+distributed and running.
+Live sources that synchronize and block on the clock (an audio source, for
+example) can since 0.10.12 use gst_base_src_wait_playing() when the
+#GstBaseSrcClass.create() function was interrupted by a state change to
+PAUSED.
+The #GstBaseSrcClass.get_times() method can be used to implement pseudo-live
+sources. It only makes sense to implement the #GstBaseSrcClass.get_times()
+function if the source is a live source. The #GstBaseSrcClass.get_times()
+function should return timestamps starting from 0, as if it were a non-live
+source. The base class will make sure that the timestamps are transformed
+into the current running_time. The base source will then wait for the
+calculated running_time before pushing out the buffer.
+For live sources, the base class will by default report a latency of 0.
+For pseudo live sources, the base class will by default measure the difference
+between the first buffer timestamp and the start time of get_times and will
+report this value as the latency.
+Subclasses should override the query function when this behaviour is not
+acceptable.
+There is only support in #GstBaseSrc for exactly one source pad, which
+should be named "src". A source implementation (subclass of #GstBaseSrc)
+should install a pad template in its class_init function, like so:
+|[
+static void
+my_element_class_init (GstMyElementClass *klass)
+{
+GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
+// srctemplate should be a #GstStaticPadTemplate with direction
+// #GST_PAD_SRC and name "src"
+gst_element_class_add_pad_template (gstelement_class,
+gst_static_pad_template_get (&amp;amp;srctemplate));
+// see #GstElementDetails
+gst_element_class_set_details (gstelement_class, &amp;amp;details);
+}
+]|
+&lt;refsect2&gt;
+&lt;title&gt;Controlled shutdown of live sources in applications&lt;/title&gt;
+&lt;para&gt;
+Applications that record from a live source may want to stop recording
+in a controlled way, so that the recording is stopped, but the data
+already in the pipeline is processed to the end (remember that many live
+sources would go on recording forever otherwise). For that to happen the
+application needs to make the source stop recording and send an EOS
+event down the pipeline. The application would then wait for an
+EOS message posted on the pipeline's bus to know when all data has
+been processed and the pipeline can safely be stopped.
+Since GStreamer 0.10.16 an application may send an EOS event to a source
+element to make it perform the EOS logic (send EOS event downstream or post a
+#GST_MESSAGE_SEGMENT_DONE on the bus). This can typically be done
+with the gst_element_send_event() function on the element or its parent bin.
+After the EOS has been sent to the element, the application should wait for
+an EOS message to be posted on the pipeline's bus. Once this EOS message is
+received, it may safely shut down the entire pipeline.
+The old behaviour for controlled shutdown introduced since GStreamer 0.10.3
+is still available but deprecated as it is dangerous and less flexible.
+Last reviewed on 2007-12-19 (0.10.16)
+&lt;/para&gt;
+&lt;/refsect2&gt;</doc>
+      <virtual-method name="check_get_range">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="create">
+        <return-value transfer-ownership="none">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="guint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="buf" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer**"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="do_seek">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="segment" transfer-ownership="none">
+            <type name="Gst.Segment" c:type="GstSegment*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="event">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gst.Event" c:type="GstEvent*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="fixate">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_caps">
+        <return-value transfer-ownership="full">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_size">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="guint64" c:type="guint64*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_times">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+          <parameter name="end" transfer-ownership="none">
+            <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="is_seekable">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="negotiate">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="newsegment">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="prepare_seek_segment">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="seek" transfer-ownership="none">
+            <type name="Gst.Event" c:type="GstEvent*"/>
+          </parameter>
+          <parameter name="segment" transfer-ownership="none">
+            <type name="Gst.Segment" c:type="GstSegment*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="query">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="query" transfer-ownership="none">
+            <type name="Gst.Query" c:type="GstQuery*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_caps">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="start">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="stop">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="unlock">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="unlock_stop">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <method name="get_blocksize"
+              c:identifier="gst_base_src_get_blocksize"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Get the number of bytes that @src will push out with each buffer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of bytes pushed with each buffer.</doc>
+          <type name="gulong" c:type="gulong"/>
+        </return-value>
+      </method>
+      <method name="get_do_timestamp"
+              c:identifier="gst_base_src_get_do_timestamp"
+              version="0.10.15">
+        <doc xml:whitespace="preserve">Query if @src timestamps outgoing buffers based on the current running_time.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the base class will automatically timestamp outgoing buffers.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_live" c:identifier="gst_base_src_is_live">
+        <doc xml:whitespace="preserve">Check if an element is in live mode.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if element is in live mode.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="new_seamless_segment"
+              c:identifier="gst_base_src_new_seamless_segment"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Prepare a new seamless segment for emission downstream. This function must
+only be called by derived sub-classes, and only from the create() function,
+as the stream-lock needs to be held.
+The format for the new segment will be the current format of the source, as
+configured with gst_base_src_set_format()</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if preparation of the seamless segment succeeded.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="start" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The new start value for the segment</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Stop value for the new segment</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The position value for the new segent</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_latency"
+              c:identifier="gst_base_src_query_latency"
+              version="0.10.13">
+        <doc xml:whitespace="preserve">Query the source for the latency parameters. @live will be TRUE when @src is
+configured as a live source. @min_latency will be set to the difference
+between the running time and the timestamp of the first buffer.
+This function is mostly used by subclasses.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if the query succeeded.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="live"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">if the source is live</doc>
+            <type name="gboolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="min_latency"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the min latency of the source</doc>
+            <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+          <parameter name="max_latency"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <doc xml:whitespace="preserve">the max latency of the source</doc>
+            <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_blocksize"
+              c:identifier="gst_base_src_set_blocksize"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Set the number of bytes that @src will push out with each buffer. When</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="blocksize" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the new blocksize in bytes</doc>
+            <type name="gulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_do_timestamp"
+              c:identifier="gst_base_src_set_do_timestamp"
+              version="0.10.15">
+        <doc xml:whitespace="preserve">Configure @src to automatically timestamp outgoing buffers based on the
+current running_time of the pipeline. This property is mostly useful for live
+sources.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="timestamp" transfer-ownership="none">
+            <doc xml:whitespace="preserve">enable or disable timestamping</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_format"
+              c:identifier="gst_base_src_set_format"
+              version="0.10.1">
+        <doc xml:whitespace="preserve">Sets the default format of the source. This will be the format used
+for sending NEW_SEGMENT events and for performing seeks.
+If a format of GST_FORMAT_BYTES is set, the element will be able to
+operate in pull mode if the #GstBaseSrcClass.is_seekable() returns TRUE.
+This function must only be called in states &lt; %GST_STATE_PAUSED.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the format to use</doc>
+            <type name="Gst.Format" c:type="GstFormat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_live" c:identifier="gst_base_src_set_live">
+        <doc xml:whitespace="preserve">If the element listens to a live source, @live should
+be set to %TRUE.
+A live source will not produce data in the PAUSED state and
+will therefore not be able to participate in the PREROLL phase
+of a pipeline. To signal this fact to the application and the
+pipeline, the state change return value of the live source will
+be GST_STATE_CHANGE_NO_PREROLL.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="live" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new live-mode</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="wait_playing"
+              c:identifier="gst_base_src_wait_playing"
+              version="0.10.12">
+        <doc xml:whitespace="preserve">If the #GstBaseSrcClass.create() method performs its own synchronisation
+against the clock it must unblock when going from PLAYING to the PAUSED state
+and call this method before continuing to produce the remaining data.
+This function will block until a state change to PLAYING happens (in which
+case this function returns #GST_FLOW_OK) or the processing must be stopped due
+to a state change to READY or a FLUSH event (in which case this function
+returns #GST_FLOW_WRONG_STATE).
+continue. Any other return value should be returned from the create vmethod.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">#GST_FLOW_OK if @src is PLAYING and processing can</doc>
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+      </method>
+      <property name="blocksize" writable="1" transfer-ownership="none">
+        <type name="gulong"/>
+      </property>
+      <property name="do-timestamp" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="num-buffers" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <property name="typefind" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <field name="element">
+        <type name="Gst.Element" c:type="GstElement"/>
+      </field>
+      <field name="srcpad">
+        <type name="Gst.Pad" c:type="GstPad*"/>
+      </field>
+      <field name="live_lock">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="live_cond">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="is_live">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="live_running">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="blocksize">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="can_activate_push">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="pad_mode">
+        <type name="Gst.ActivateMode" c:type="GstActivateMode"/>
+      </field>
+      <field name="seekable">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="random_access">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="clock_id">
+        <type name="Gst.ClockID" c:type="GstClockID"/>
+      </field>
+      <field name="end_time">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="segment">
+        <type name="Gst.Segment" c:type="GstSegment"/>
+      </field>
+      <field name="need_newsegment">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="offset">
+        <type name="guint64" c:type="guint64"/>
+      </field>
+      <field name="size">
+        <type name="guint64" c:type="guint64"/>
+      </field>
+      <field name="num_buffers">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="num_buffers_left">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <union name="data" c:type="data">
+        <record name="ABI" c:type="ABI">
+          <field name="typefind" writable="1">
+            <type name="gboolean" c:type="gboolean"/>
+          </field>
+          <field name="running" writable="1">
+            <type name="gboolean" c:type="gboolean"/>
+          </field>
+          <field name="pending_seek" writable="1">
+            <type name="Gst.Event" c:type="GstEvent*"/>
+          </field>
+        </record>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="gpointer" fixed-size="19">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </field>
+      </union>
+      <field name="priv">
+        <type name="BaseSrcPrivate" c:type="GstBaseSrcPrivate*"/>
+      </field>
+    </class>
+    <record name="BaseSrcClass"
+            c:type="GstBaseSrcClass"
+            glib:is-gtype-struct-for="BaseSrc">
+      <doc xml:whitespace="preserve">Subclasses can override any of the available virtual methods or not, as
+needed. At the minimum, the @create method should be overridden to produce
+buffers.</doc>
+      <field name="parent_class">
+        <type name="Gst.ElementClass" c:type="GstElementClass"/>
+      </field>
+      <field name="get_caps">
+        <callback name="get_caps">
+          <return-value transfer-ownership="full">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_caps">
+        <callback name="set_caps">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="negotiate">
+        <callback name="negotiate">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="newsegment">
+        <callback name="newsegment">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="start">
+        <callback name="start">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="stop">
+        <callback name="stop">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_times">
+        <callback name="get_times">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+            <parameter name="start" transfer-ownership="none">
+              <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+            </parameter>
+            <parameter name="end" transfer-ownership="none">
+              <type name="Gst.ClockTime" c:type="GstClockTime*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_size">
+        <callback name="get_size">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+            <parameter name="size" transfer-ownership="none">
+              <type name="guint64" c:type="guint64*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="is_seekable">
+        <callback name="is_seekable">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unlock">
+        <callback name="unlock">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="event">
+        <callback name="event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gst.Event" c:type="GstEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="create">
+        <callback name="create">
+          <return-value transfer-ownership="none">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+            <parameter name="offset" transfer-ownership="none">
+              <type name="guint64" c:type="guint64"/>
+            </parameter>
+            <parameter name="size" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer**"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="do_seek">
+        <callback name="do_seek">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+            <parameter name="segment" transfer-ownership="none">
+              <type name="Gst.Segment" c:type="GstSegment*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query">
+        <callback name="query">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+            <parameter name="query" transfer-ownership="none">
+              <type name="Gst.Query" c:type="GstQuery*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="check_get_range">
+        <callback name="check_get_range">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="fixate">
+        <callback name="fixate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unlock_stop">
+        <callback name="unlock_stop">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="prepare_seek_segment">
+        <callback name="prepare_seek_segment">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="BaseSrc" c:type="GstBaseSrc*"/>
+            </parameter>
+            <parameter name="seek" transfer-ownership="none">
+              <type name="Gst.Event" c:type="GstEvent*"/>
+            </parameter>
+            <parameter name="segment" transfer-ownership="none">
+              <type name="Gst.Segment" c:type="GstSegment*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="14">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="BaseSrcFlags" c:type="GstBaseSrcFlags">
+      <doc xml:whitespace="preserve">The #GstElement flags that a basesrc element may have.</doc>
+      <member name="started"
+              value="1048576"
+              c:identifier="GST_BASE_SRC_STARTED"/>
+      <member name="flag_last"
+              value="4194304"
+              c:identifier="GST_BASE_SRC_FLAG_LAST"/>
+    </bitfield>
+    <record name="BaseSrcPrivate" c:type="GstBaseSrcPrivate" disguised="1">
+    </record>
+    <class name="BaseTransform"
+           c:symbol-prefix="base_transform"
+           c:type="GstBaseTransform"
+           parent="Gst.Element"
+           abstract="1"
+           glib:type-name="GstBaseTransform"
+           glib:get-type="gst_base_transform_get_type"
+           glib:type-struct="BaseTransformClass">
+      <doc xml:whitespace="preserve">This base class is for filter elements that process data.
+It provides for:
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;one sinkpad and one srcpad&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Possible formats on sink and source pad implemented
+with custom transform_caps function. By default uses
+same format on sink and source.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;Handles state changes&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;Does flushing&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;Push mode&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Pull mode if the sub-class transform can operate on arbitrary data
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;refsect2&gt;
+&lt;title&gt;Use Cases&lt;/title&gt;
+&lt;para&gt;
+&lt;orderedlist&gt;
+&lt;listitem&gt;
+&lt;itemizedlist&gt;&lt;title&gt;Passthrough mode&lt;/title&gt;
+&lt;listitem&gt;&lt;para&gt;
+Element has no interest in modifying the buffer. It may want to inspect it,
+in which case the element should have a transform_ip function. If there
+is no transform_ip function in passthrough mode, the buffer is pushed
+intact.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+On the GstBaseTransformClass is the passthrough_on_same_caps variable
+which will automatically set/unset passthrough based on whether the
+element negotiates the same caps on both pads.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+passthrough_on_same_caps on an element that doesn't implement a
+transform_caps function is useful for elements that only inspect data
+(such as level)
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;itemizedlist&gt;
+&lt;title&gt;Example elements&lt;/title&gt;
+&lt;listitem&gt;Level&lt;/listitem&gt;
+&lt;listitem&gt;Videoscale, audioconvert, ffmpegcolorspace, audioresample in
+certain modes.&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;itemizedlist&gt;
+&lt;title&gt;Modifications in-place - input buffer and output buffer are the
+same thing.&lt;/title&gt;
+&lt;listitem&gt;&lt;para&gt;
+The element must implement a transform_ip function.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Output buffer size must &lt;= input buffer size
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+If the always_in_place flag is set, non-writable buffers will be copied
+and passed to the transform_ip function, otherwise a new buffer will be
+created and the transform function called.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Incoming writable buffers will be passed to the transform_ip function
+immediately.  &lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+only implementing transform_ip and not transform implies always_in_place
+= TRUE
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;itemizedlist&gt;
+&lt;title&gt;Example elements&lt;/title&gt;
+&lt;listitem&gt;Volume&lt;/listitem&gt;
+&lt;listitem&gt;Audioconvert in certain modes (signed/unsigned
+conversion)&lt;/listitem&gt;
+&lt;listitem&gt;ffmpegcolorspace in certain modes (endianness
+swapping)&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;itemizedlist&gt;
+&lt;title&gt;Modifications only to the caps/metadata of a buffer&lt;/title&gt;
+&lt;listitem&gt;&lt;para&gt;
+The element does not require writable data, but non-writable buffers
+should be subbuffered so that the meta-information can be replaced.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Elements wishing to operate in this mode should replace the
+prepare_output_buffer method to create subbuffers of the input buffer
+and set always_in_place to TRUE
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;itemizedlist&gt;
+&lt;title&gt;Example elements&lt;/title&gt;
+&lt;listitem&gt;Capsfilter when setting caps on outgoing buffers that have
+none.&lt;/listitem&gt;
+&lt;listitem&gt;identity when it is going to re-timestamp buffers by
+datarate.&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;itemizedlist&gt;&lt;title&gt;Normal mode&lt;/title&gt;
+&lt;listitem&gt;&lt;para&gt;
+always_in_place flag is not set, or there is no transform_ip function
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Element will receive an input buffer and output buffer to operate on.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Output buffer is allocated by calling the prepare_output_buffer function.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;itemizedlist&gt;
+&lt;title&gt;Example elements&lt;/title&gt;
+&lt;listitem&gt;Videoscale, ffmpegcolorspace, audioconvert when doing
+scaling/conversions&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;/listitem&gt;
+&lt;listitem&gt;
+&lt;itemizedlist&gt;&lt;title&gt;Special output buffer allocations&lt;/title&gt;
+&lt;listitem&gt;&lt;para&gt;
+Elements which need to do special allocation of their output buffers
+other than what gst_buffer_pad_alloc allows should implement a
+prepare_output_buffer method, which calls the parent implementation and
+passes the newly allocated buffer.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;itemizedlist&gt;
+&lt;title&gt;Example elements&lt;/title&gt;
+&lt;listitem&gt;efence&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;/listitem&gt;
+&lt;/orderedlist&gt;
+&lt;/para&gt;
+&lt;/refsect2&gt;
+&lt;refsect2&gt;
+&lt;title&gt;Sub-class settable flags on GstBaseTransform&lt;/title&gt;
+&lt;para&gt;
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;
+&lt;itemizedlist&gt;&lt;title&gt;passthrough&lt;/title&gt;
+&lt;listitem&gt;&lt;para&gt;
+Implies that in the current configuration, the sub-class is not
+interested in modifying the buffers.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Elements which are always in passthrough mode whenever the same caps
+has been negotiated on both pads can set the class variable
+passthrough_on_same_caps to have this behaviour automatically.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+&lt;itemizedlist&gt;&lt;title&gt;always_in_place&lt;/title&gt;
+&lt;listitem&gt;&lt;para&gt;
+Determines whether a non-writable buffer will be copied before passing
+to the transform_ip function.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Implied TRUE if no transform function is implemented.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Implied FALSE if ONLY transform function is implemented.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;/para&gt;
+&lt;/refsect2&gt;</doc>
+      <virtual-method name="accept_caps">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="Gst.PadDirection" c:type="GstPadDirection"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="before_transform">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="event">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gst.Event" c:type="GstEvent*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="fixate_caps">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="Gst.PadDirection" c:type="GstPadDirection"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+          <parameter name="othercaps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_unit_size">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="prepare_output_buffer">
+        <return-value transfer-ownership="none">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="input" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+          <parameter name="buf" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer**"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_caps">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="incaps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+          <parameter name="outcaps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="src_event">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gst.Event" c:type="GstEvent*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="start">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="stop">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="transform">
+        <return-value transfer-ownership="none">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="inbuf" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+          <parameter name="outbuf" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="transform_caps">
+        <return-value transfer-ownership="full">
+          <type name="Gst.Caps" c:type="GstCaps*"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="Gst.PadDirection" c:type="GstPadDirection"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="transform_ip">
+        <return-value transfer-ownership="none">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="buf" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="transform_size">
+        <return-value transfer-ownership="none">
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="Gst.PadDirection" c:type="GstPadDirection"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="othercaps" transfer-ownership="none">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+          <parameter name="othersize" transfer-ownership="none">
+            <type name="guint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="is_in_place" c:identifier="gst_base_transform_is_in_place">
+        <doc xml:whitespace="preserve">See if @trans is configured as a in_place transform.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE is the transform is configured in in_place mode.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_passthrough"
+              c:identifier="gst_base_transform_is_passthrough">
+        <doc xml:whitespace="preserve">See if @trans is configured as a passthrough transform.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE is the transform is configured in passthrough mode.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_qos_enabled"
+              c:identifier="gst_base_transform_is_qos_enabled"
+              version="0.10.5">
+        <doc xml:whitespace="preserve">Queries if the transform will handle QoS.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if QoS is enabled.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="reconfigure"
+              c:identifier="gst_base_transform_reconfigure"
+              version="0.10.21">
+        <doc xml:whitespace="preserve">Instructs @trans to renegotiate a new downstream transform on the next
+buffer. This function is typically called after properties on the transform
+were set that influence the output format.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_gap_aware"
+              c:identifier="gst_base_transform_set_gap_aware"
+              version="0.10.16">
+        <doc xml:whitespace="preserve">If @gap_aware is %FALSE (the default), output buffers will have the
+%GST_BUFFER_FLAG_GAP flag unset.
+If set to %TRUE, the element must handle output buffers with this flag set
+correctly, i.e. it can assume that the buffer contains neutral data but must
+unset the flag if the output is no neutral data.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gap_aware" transfer-ownership="none">
+            <doc xml:whitespace="preserve">New state</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_in_place"
+              c:identifier="gst_base_transform_set_in_place">
+        <doc xml:whitespace="preserve">Determines whether a non-writable buffer will be copied before passing
+to the transform_ip function.
+&lt;itemizedlist&gt;
+&lt;listitem&gt;Always TRUE if no transform function is implemented.&lt;/listitem&gt;
+&lt;listitem&gt;Always FALSE if ONLY transform function is implemented.&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="in_place" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Boolean value indicating that we would like to operate on in_place buffers.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_passthrough"
+              c:identifier="gst_base_transform_set_passthrough">
+        <doc xml:whitespace="preserve">Set passthrough mode for this filter by default. This is mostly
+useful for filters that do not care about negotiation.
+Always TRUE for filters which don't implement either a transform
+or transform_ip method.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="passthrough" transfer-ownership="none">
+            <doc xml:whitespace="preserve">boolean indicating passthrough mode.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_qos_enabled"
+              c:identifier="gst_base_transform_set_qos_enabled"
+              version="0.10.5">
+        <doc xml:whitespace="preserve">Enable or disable QoS handling in the transform.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="enabled" transfer-ownership="none">
+            <doc xml:whitespace="preserve">new state</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="suggest"
+              c:identifier="gst_base_transform_suggest"
+              version="0.10.21">
+        <doc xml:whitespace="preserve">Instructs @trans to suggest new @caps upstream. A copy of @caps will be
+taken.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <doc xml:whitespace="preserve">caps to suggest</doc>
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">buffer size to suggest</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="update_qos"
+              c:identifier="gst_base_transform_update_qos"
+              version="0.10.5">
+        <doc xml:whitespace="preserve">Set the QoS parameters in the transform. This function is called internally
+when a QOS event is received but subclasses can provide custom information
+when needed.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="proportion" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the proportion</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+          <parameter name="diff" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the diff against the clock</doc>
+            <type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff"/>
+          </parameter>
+          <parameter name="timestamp" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the timestamp of the buffer generating the QoS expressed in running_time.</doc>
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="qos" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <field name="element">
+        <type name="Gst.Element" c:type="GstElement"/>
+      </field>
+      <field name="sinkpad">
+        <type name="Gst.Pad" c:type="GstPad*"/>
+      </field>
+      <field name="srcpad">
+        <type name="Gst.Pad" c:type="GstPad*"/>
+      </field>
+      <field name="passthrough">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="always_in_place">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="cache_caps1">
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </field>
+      <field name="cache_caps1_size">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="cache_caps2">
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </field>
+      <field name="cache_caps2_size">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="have_same_caps">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="delay_configure">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="pending_configure">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="negotiated">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="have_newsegment">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="segment">
+        <type name="Gst.Segment" c:type="GstSegment"/>
+      </field>
+      <field name="transform_lock">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="BaseTransformPrivate" c:type="GstBaseTransformPrivate*"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="19">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </class>
+    <record name="BaseTransformClass"
+            c:type="GstBaseTransformClass"
+            glib:is-gtype-struct-for="BaseTransform">
+      <doc xml:whitespace="preserve">Subclasses can override any of the available virtual methods or not, as
+needed. At minimum either @transform or @transform_ip need to be overridden.
+If the element can overwrite the input data with the results (data is of the
+same type and quantity) it should provide @transform_ip.</doc>
+      <field name="parent_class">
+        <type name="Gst.ElementClass" c:type="GstElementClass"/>
+      </field>
+      <field name="transform_caps">
+        <callback name="transform_caps">
+          <return-value transfer-ownership="full">
+            <type name="Gst.Caps" c:type="GstCaps*"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+            <parameter name="direction" transfer-ownership="none">
+              <type name="Gst.PadDirection" c:type="GstPadDirection"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="fixate_caps">
+        <callback name="fixate_caps">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+            <parameter name="direction" transfer-ownership="none">
+              <type name="Gst.PadDirection" c:type="GstPadDirection"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+            <parameter name="othercaps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="transform_size">
+        <callback name="transform_size">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+            <parameter name="direction" transfer-ownership="none">
+              <type name="Gst.PadDirection" c:type="GstPadDirection"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+            <parameter name="size" transfer-ownership="none">
+              <type name="guint" c:type="guint"/>
+            </parameter>
+            <parameter name="othercaps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+            <parameter name="othersize" transfer-ownership="none">
+              <type name="guint" c:type="guint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_unit_size">
+        <callback name="get_unit_size">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+            <parameter name="size" transfer-ownership="none">
+              <type name="guint" c:type="guint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_caps">
+        <callback name="set_caps">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+            <parameter name="incaps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+            <parameter name="outcaps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="start">
+        <callback name="start">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="stop">
+        <callback name="stop">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="event">
+        <callback name="event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gst.Event" c:type="GstEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="transform">
+        <callback name="transform">
+          <return-value transfer-ownership="none">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+            <parameter name="inbuf" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+            <parameter name="outbuf" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="transform_ip">
+        <callback name="transform_ip">
+          <return-value transfer-ownership="none">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="passthrough_on_same_caps">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="prepare_output_buffer">
+        <callback name="prepare_output_buffer">
+          <return-value transfer-ownership="none">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+            <parameter name="input" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+            <parameter name="size" transfer-ownership="none">
+              <type name="gint" c:type="gint"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer**"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="src_event">
+        <callback name="src_event">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gst.Event" c:type="GstEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="before_transform">
+        <callback name="before_transform">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+            <parameter name="buffer" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="accept_caps">
+        <callback name="accept_caps">
+          <return-value transfer-ownership="none">
+            <type name="gboolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="trans" transfer-ownership="none">
+              <type name="BaseTransform" c:type="GstBaseTransform*"/>
+            </parameter>
+            <parameter name="direction" transfer-ownership="none">
+              <type name="Gst.PadDirection" c:type="GstPadDirection"/>
+            </parameter>
+            <parameter name="caps" transfer-ownership="none">
+              <type name="Gst.Caps" c:type="GstCaps*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="17">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <record name="BaseTransformPrivate"
+            c:type="GstBaseTransformPrivate"
+            disguised="1">
+    </record>
+    <record name="BitReader" c:type="GstBitReader">
+      <doc xml:whitespace="preserve">#GstBitReader provides a bit reader that can read any number of bits
+from a memory buffer. It provides functions for reading any number of bits
+into 8, 16, 32 and 64 bit variables.</doc>
+      <field name="data" writable="1">
+        <type name="guint8" c:type="guint8*"/>
+      </field>
+      <field name="size" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="byte" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="bit" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <method name="free" c:identifier="gst_bit_reader_free" version="0.10.22">
+        <doc xml:whitespace="preserve">Frees a #GstBitReader instance, which was previously allocated by
+gst_bit_reader_new() or gst_bit_reader_new_from_buffer().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_bits_uint16"
+              c:identifier="gst_bit_reader_get_bits_uint16"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read @nbits bits into @val and update the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #guint16 to store the result</doc>
+            <type name="guint16" c:type="guint16*"/>
+          </parameter>
+          <parameter name="nbits" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of bits to read</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_bits_uint32"
+              c:identifier="gst_bit_reader_get_bits_uint32"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read @nbits bits into @val and update the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #guint32 to store the result</doc>
+            <type name="guint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="nbits" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of bits to read</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_bits_uint64"
+              c:identifier="gst_bit_reader_get_bits_uint64"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read @nbits bits into @val and update the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #guint64 to store the result</doc>
+            <type name="guint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="nbits" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of bits to read</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_bits_uint8"
+              c:identifier="gst_bit_reader_get_bits_uint8"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read @nbits bits into @val and update the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #guint8 to store the result</doc>
+            <type name="guint8" c:type="guint8*"/>
+          </parameter>
+          <parameter name="nbits" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of bits to read</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pos"
+              c:identifier="gst_bit_reader_get_pos"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Returns the current position of a #GstBitReader instance in bits.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The current position of @reader in bits.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_remaining"
+              c:identifier="gst_bit_reader_get_remaining"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Returns the remaining number of bits of a #GstBitReader instance.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The remaining number of bits of @reader instance.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_size"
+              c:identifier="gst_bit_reader_get_size"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Returns the total number of bits of a #GstBitReader instance.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The total number of bits of @reader instance.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="init" c:identifier="gst_bit_reader_init" version="0.10.22">
+        <doc xml:whitespace="preserve">Initializes a #GstBitReader instance to read from @data. This function
+can be called on already initialized instances.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data from which the bit reader should read</doc>
+            <array length="1" c:type="guint8*">
+              <type name="guint8" c:type="guint8"/>
+            </array>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Size of @data in bytes</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="init_from_buffer"
+              c:identifier="gst_bit_reader_init_from_buffer"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Initializes a #GstBitReader instance to read from @buffer. This function
+can be called on already initialized instances.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Buffer from which the #GstBitReader should read</doc>
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_bits_uint16"
+              c:identifier="gst_bit_reader_peek_bits_uint16"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read @nbits bits into @val but keep the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #guint16 to store the result</doc>
+            <type name="guint16" c:type="guint16*"/>
+          </parameter>
+          <parameter name="nbits" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of bits to read</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_bits_uint32"
+              c:identifier="gst_bit_reader_peek_bits_uint32"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read @nbits bits into @val but keep the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #guint32 to store the result</doc>
+            <type name="guint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="nbits" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of bits to read</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_bits_uint64"
+              c:identifier="gst_bit_reader_peek_bits_uint64"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read @nbits bits into @val but keep the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #guint64 to store the result</doc>
+            <type name="guint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="nbits" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of bits to read</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_bits_uint8"
+              c:identifier="gst_bit_reader_peek_bits_uint8"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read @nbits bits into @val but keep the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #guint8 to store the result</doc>
+            <type name="guint8" c:type="guint8*"/>
+          </parameter>
+          <parameter name="nbits" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of bits to read</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_pos"
+              c:identifier="gst_bit_reader_set_pos"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Sets the new position of a #GstBitReader instance to @pos in bits.
+otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the position could be set successfully, %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The new position in bits</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="skip" c:identifier="gst_bit_reader_skip" version="0.10.22">
+        <doc xml:whitespace="preserve">Skips @nbits bits of the #GstBitReader instance.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @nbits bits could be skipped, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="nbits" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bits to skip</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="skip_to_byte"
+              c:identifier="gst_bit_reader_skip_to_byte"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Skips until the next byte.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="ByteReader" c:type="GstByteReader">
+      <doc xml:whitespace="preserve">#GstByteReader provides a byte reader that can read different integer and
+floating point types from a memory buffer. It provides functions for reading
+signed/unsigned, little/big endian integers of 8, 16, 24, 32 and 64 bits
+and functions for reading little/big endian floating points numbers of
+32 and 64 bits. It also provides functions to read NUL-terminated strings
+in various character encodings.</doc>
+      <field name="data" writable="1">
+        <type name="guint8" c:type="guint8*"/>
+      </field>
+      <field name="size" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="byte" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <method name="dup_data"
+              c:identifier="gst_byte_reader_dup_data"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Returns a newly-allocated copy of the current data
+position if at least @size bytes are left and
+updates the current position. Free with g_free() when no longer needed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="size"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">Size in bytes</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="val"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">address of a #guint8 pointer variable in which to store the result</doc>
+            <array length="0" c:type="guint8**">
+              <type name="guint8" c:type="guint8*"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dup_string_utf16"
+              c:identifier="gst_byte_reader_dup_string_utf16"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Returns a newly-allocated copy of the current data position if there is
+a NUL-terminated UTF-16 string in the data (this could be an empty string
+as well), and advances the current position.
+No input checking for valid UTF-16 is done. This function is endianness
+agnostic - you should not assume the UTF-16 characters are in host
+endianness.
+This function will fail if no NUL-terminator was found in in the data.
+byte alignment of the UTF-16 string.
+string put into @str must be freed with g_free() when no longer needed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if a string could be read, %FALSE otherwise. The</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">address of a #guint16 pointer varieble in which to store the result</doc>
+            <array c:type="guint16**">
+              <type name="guint16" c:type="guint16*"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dup_string_utf32"
+              c:identifier="gst_byte_reader_dup_string_utf32"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Returns a newly-allocated copy of the current data position if there is
+a NUL-terminated UTF-32 string in the data (this could be an empty string
+as well), and advances the current position.
+No input checking for valid UTF-32 is done. This function is endianness
+agnostic - you should not assume the UTF-32 characters are in host
+endianness.
+This function will fail if no NUL-terminator was found in in the data.
+byte alignment of the UTF-32 string.
+string put into @str must be freed with g_free() when no longer needed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if a string could be read, %FALSE otherwise. The</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">address of a #guint32 pointer varieble in which to store the result</doc>
+            <array c:type="guint32**">
+              <type name="guint32" c:type="guint32*"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dup_string_utf8"
+              c:identifier="gst_byte_reader_dup_string_utf8"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">FIXME:Reads (copies) a NUL-terminated string in the #GstByteReader instance,
+advancing the current position to the byte after the string. This will work
+for any NUL-terminated string with a character width of 8 bits, so ASCII,
+UTF-8, ISO-8859-N etc. No input checking for valid UTF-8 is done.
+This function will fail if no NUL-terminator was found in in the data.
+string put into @str must be freed with g_free() when no longer needed.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if a string could be read into @str, %FALSE otherwise. The</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">address of a #gchar pointer varieble in which to store the result</doc>
+            <array c:type="gchar**">
+              <type name="utf8" c:type="gchar*"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free"
+              c:identifier="gst_byte_reader_free"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Frees a #GstByteReader instance, which was previously allocated by
+gst_byte_reader_new() or gst_byte_reader_new_from_buffer().</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_data"
+              c:identifier="gst_byte_reader_get_data"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Returns a constant pointer to the current data
+position if at least @size bytes are left and
+updates the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="size"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">Size in bytes</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="val"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">address of a #guint8 pointer variable in which to store the result</doc>
+            <array length="0" c:type="guint8**">
+              <type name="guint8" c:type="guint8*"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_float32_be"
+              c:identifier="gst_byte_reader_get_float32_be"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read a 32 bit big endian floating point value into @val
+and update the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #gfloat to store the result</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_float32_le"
+              c:identifier="gst_byte_reader_get_float32_le"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read a 32 bit little endian floating point value into @val
+and update the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #gfloat to store the result</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_float64_be"
+              c:identifier="gst_byte_reader_get_float64_be"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read a 64 bit big endian floating point value into @val
+and update the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #gdouble to store the result</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_float64_le"
+              c:identifier="gst_byte_reader_get_float64_le"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read a 64 bit little endian floating point value into @val
+and update the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #gdouble to store the result</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int16_be"
+              c:identifier="gst_byte_reader_get_int16_be"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read a signed 16 bit big endian integer into @val
+and update the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #gint16 to store the result</doc>
+            <type name="gint16" c:type="gint16*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int16_le"
+              c:identifier="gst_byte_reader_get_int16_le"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read a signed 16 bit little endian integer into @val
+and update the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #gint16 to store the result</doc>
+            <type name="gint16" c:type="gint16*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int24_be"
+              c:identifier="gst_byte_reader_get_int24_be"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read a signed 24 bit big endian integer into @val
+and update the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #gint32 to store the result</doc>
+            <type name="gint32" c:type="gint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int24_le"
+              c:identifier="gst_byte_reader_get_int24_le"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read a signed 24 bit little endian integer into @val
+and update the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #gint32 to store the result</doc>
+            <type name="gint32" c:type="gint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int32_be"
+              c:identifier="gst_byte_reader_get_int32_be"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read a signed 32 bit big endian integer into @val
+and update the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #gint32 to store the result</doc>
+            <type name="gint32" c:type="gint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int32_le"
+              c:identifier="gst_byte_reader_get_int32_le"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read a signed 32 bit little endian integer into @val
+and update the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #gint32 to store the result</doc>
+            <type name="gint32" c:type="gint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int64_be"
+              c:identifier="gst_byte_reader_get_int64_be"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read a signed 64 bit big endian integer into @val
+and update the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #gint64 to store the result</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int64_le"
+              c:identifier="gst_byte_reader_get_int64_le"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read a signed 64 bit little endian integer into @val
+and update the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #gint64 to store the result</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int8"
+              c:identifier="gst_byte_reader_get_int8"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read a signed 8 bit integer into @val and update the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #gint8 to store the result</doc>
+            <type name="gint8" c:type="gint8*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pos"
+              c:identifier="gst_byte_reader_get_pos"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Returns the current position of a #GstByteReader instance in bytes.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The current position of @reader in bytes.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_remaining"
+              c:identifier="gst_byte_reader_get_remaining"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Returns the remaining number of bytes of a #GstByteReader instance.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The remaining number of bytes of @reader instance.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_size"
+              c:identifier="gst_byte_reader_get_size"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Returns the total number of bytes of a #GstByteReader instance.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The total number of bytes of @reader instance.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_string_utf8"
+              c:identifier="gst_byte_reader_get_string_utf8"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Returns a constant pointer to the current data position if there is
+a NUL-terminated string in the data (this could be just a NUL terminator),
+advancing the current position to the byte after the string. This will work
+for any NUL-terminated string with a character width of 8 bits, so ASCII,
+UTF-8, ISO-8859-N etc.
+No input checking for valid UTF-8 is done.
+This function will fail if no NUL-terminator was found in in the data.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if a string could be found, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">address of a #gchar pointer varieble in which to store the result</doc>
+            <array c:type="gchar**">
+              <type name="utf8" c:type="gchar*"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint16_be"
+              c:identifier="gst_byte_reader_get_uint16_be"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read an unsigned 16 bit big endian integer into @val
+and update the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #guint16 to store the result</doc>
+            <type name="guint16" c:type="guint16*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint16_le"
+              c:identifier="gst_byte_reader_get_uint16_le"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read an unsigned 16 bit little endian integer into @val
+and update the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #guint16 to store the result</doc>
+            <type name="guint16" c:type="guint16*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint24_be"
+              c:identifier="gst_byte_reader_get_uint24_be"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read an unsigned 24 bit big endian integer into @val
+and update the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #guint32 to store the result</doc>
+            <type name="guint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint24_le"
+              c:identifier="gst_byte_reader_get_uint24_le"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read an unsigned 24 bit little endian integer into @val
+and update the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #guint32 to store the result</doc>
+            <type name="guint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint32_be"
+              c:identifier="gst_byte_reader_get_uint32_be"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read an unsigned 32 bit big endian integer into @val
+and update the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #guint32 to store the result</doc>
+            <type name="guint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint32_le"
+              c:identifier="gst_byte_reader_get_uint32_le"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read an unsigned 32 bit little endian integer into @val
+and update the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #guint32 to store the result</doc>
+            <type name="guint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint64_be"
+              c:identifier="gst_byte_reader_get_uint64_be"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read an unsigned 64 bit big endian integer into @val
+and update the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #guint64 to store the result</doc>
+            <type name="guint64" c:type="guint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint64_le"
+              c:identifier="gst_byte_reader_get_uint64_le"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read an unsigned 64 bit little endian integer into @val
+and update the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #guint64 to store the result</doc>
+            <type name="guint64" c:type="guint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint8"
+              c:identifier="gst_byte_reader_get_uint8"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read an unsigned 8 bit integer into @val and update the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #guint8 to store the result</doc>
+            <type name="guint8" c:type="guint8*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="init"
+              c:identifier="gst_byte_reader_init"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Initializes a #GstByteReader instance to read from @data. This function
+can be called on already initialized instances.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">data from which the #GstByteReader should read</doc>
+            <array length="1" c:type="guint8*">
+              <type name="guint8" c:type="guint8"/>
+            </array>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Size of @data in bytes</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="init_from_buffer"
+              c:identifier="gst_byte_reader_init_from_buffer"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Initializes a #GstByteReader instance to read from @buffer. This function
+can be called on already initialized instances.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Buffer from which the #GstByteReader should read</doc>
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="masked_scan_uint32"
+              c:identifier="gst_byte_reader_masked_scan_uint32"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Scan for pattern @pattern with applied mask @mask in the byte reader data,
+starting from offset @offset relative to the current position.
+The bytes in @pattern and @mask are interpreted left-to-right, regardless
+of endianness.  All four bytes of the pattern must be present in the
+byte reader data for it to match, even if the first or last bytes are masked
+out.
+It is an error to call this function without making sure that there is
+enough data (offset+size bytes) in the byte reader.
+Example:
+&lt;programlisting&gt;
+// Assume the reader contains 0x00 0x01 0x02 ... 0xfe 0xff
+gst_byte_reader_masked_scan_uint32 (reader, 0xffffffff, 0x00010203, 0, 256);
+// -&gt; returns 0
+gst_byte_reader_masked_scan_uint32 (reader, 0xffffffff, 0x00010203, 1, 255);
+// -&gt; returns -1
+gst_byte_reader_masked_scan_uint32 (reader, 0xffffffff, 0x01020304, 1, 255);
+// -&gt; returns 1
+gst_byte_reader_masked_scan_uint32 (reader, 0xffff, 0x0001, 0, 256);
+// -&gt; returns -1
+gst_byte_reader_masked_scan_uint32 (reader, 0xffff, 0x0203, 0, 256);
+// -&gt; returns 0
+gst_byte_reader_masked_scan_uint32 (reader, 0xffff0000, 0x02030000, 0, 256);
+// -&gt; returns 2
+gst_byte_reader_masked_scan_uint32 (reader, 0xffff0000, 0x02030000, 0, 4);
+// -&gt; returns -1
+&lt;/programlisting&gt;</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">offset of the first match, or -1 if no match was found.</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="mask" transfer-ownership="none">
+            <doc xml:whitespace="preserve">mask to apply to data before matching against @pattern</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="pattern" transfer-ownership="none">
+            <doc xml:whitespace="preserve">pattern to match (after mask is applied)</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">offset from which to start scanning, relative to the current position</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">number of bytes to scan from offset</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_data"
+              c:identifier="gst_byte_reader_peek_data"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Returns a constant pointer to the current data
+position if at least @size bytes are left and
+keeps the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="size"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">Size in bytes</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="val"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">address of a #guint8 pointer variable in which to store the result</doc>
+            <array length="0" c:type="guint8**">
+              <type name="guint8" c:type="guint8*"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_float32_be"
+              c:identifier="gst_byte_reader_peek_float32_be"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read a 32 bit big endian floating point value into @val
+but keep the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #gfloat to store the result</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_float32_le"
+              c:identifier="gst_byte_reader_peek_float32_le"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read a 32 bit little endian floating point value into @val
+but keep the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #gfloat to store the result</doc>
+            <type name="gfloat" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_float64_be"
+              c:identifier="gst_byte_reader_peek_float64_be"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read a 64 bit big endian floating point value into @val
+but keep the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #gdouble to store the result</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_float64_le"
+              c:identifier="gst_byte_reader_peek_float64_le"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read a 64 bit little endian floating point value into @val
+but keep the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #gdouble to store the result</doc>
+            <type name="gdouble" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_int16_be"
+              c:identifier="gst_byte_reader_peek_int16_be"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read a signed 16 bit big endian integer into @val
+but keep the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #gint16 to store the result</doc>
+            <type name="gint16" c:type="gint16*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_int16_le"
+              c:identifier="gst_byte_reader_peek_int16_le"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read a signed 16 bit little endian integer into @val
+but keep the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #gint16 to store the result</doc>
+            <type name="gint16" c:type="gint16*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_int24_be"
+              c:identifier="gst_byte_reader_peek_int24_be"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read a signed 24 bit big endian integer into @val
+but keep the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #gint32 to store the result</doc>
+            <type name="gint32" c:type="gint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_int24_le"
+              c:identifier="gst_byte_reader_peek_int24_le"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read a signed 24 bit little endian integer into @val
+but keep the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #gint32 to store the result</doc>
+            <type name="gint32" c:type="gint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_int32_be"
+              c:identifier="gst_byte_reader_peek_int32_be"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read a signed 32 bit big endian integer into @val
+but keep the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #gint32 to store the result</doc>
+            <type name="gint32" c:type="gint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_int32_le"
+              c:identifier="gst_byte_reader_peek_int32_le"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read a signed 32 bit little endian integer into @val
+but keep the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #gint32 to store the result</doc>
+            <type name="gint32" c:type="gint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_int64_be"
+              c:identifier="gst_byte_reader_peek_int64_be"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read a signed 64 bit big endian integer into @val
+but keep the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #gint64 to store the result</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_int64_le"
+              c:identifier="gst_byte_reader_peek_int64_le"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read a signed 64 bit little endian integer into @val
+but keep the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #gint64 to store the result</doc>
+            <type name="gint64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_int8"
+              c:identifier="gst_byte_reader_peek_int8"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read a signed 8 bit integer into @val but keep the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #gint8 to store the result</doc>
+            <type name="gint8" c:type="gint8*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_string_utf8"
+              c:identifier="gst_byte_reader_peek_string_utf8"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Returns a constant pointer to the current data position if there is
+a NUL-terminated string in the data (this could be just a NUL terminator).
+The current position will be maintained. This will work for any
+NUL-terminated string with a character width of 8 bits, so ASCII,
+UTF-8, ISO-8859-N etc.
+No input checking for valid UTF-8 is done.
+This function will fail if no NUL-terminator was found in in the data.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if a string could be skipped, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">address of a #gchar pointer varieble in which to store the result</doc>
+            <array c:type="gchar**">
+              <type name="utf8" c:type="gchar*"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_uint16_be"
+              c:identifier="gst_byte_reader_peek_uint16_be"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read an unsigned 16 bit big endian integer into @val
+but keep the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #guint16 to store the result</doc>
+            <type name="guint16" c:type="guint16*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_uint16_le"
+              c:identifier="gst_byte_reader_peek_uint16_le"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read an unsigned 16 bit little endian integer into @val
+but keep the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #guint16 to store the result</doc>
+            <type name="guint16" c:type="guint16*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_uint24_be"
+              c:identifier="gst_byte_reader_peek_uint24_be"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read an unsigned 24 bit big endian integer into @val
+but keep the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #guint32 to store the result</doc>
+            <type name="guint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_uint24_le"
+              c:identifier="gst_byte_reader_peek_uint24_le"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read an unsigned 24 bit little endian integer into @val
+but keep the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #guint32 to store the result</doc>
+            <type name="guint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_uint32_be"
+              c:identifier="gst_byte_reader_peek_uint32_be"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read an unsigned 32 bit big endian integer into @val
+but keep the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #guint32 to store the result</doc>
+            <type name="guint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_uint32_le"
+              c:identifier="gst_byte_reader_peek_uint32_le"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read an unsigned 32 bit little endian integer into @val
+but keep the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #guint32 to store the result</doc>
+            <type name="guint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_uint64_be"
+              c:identifier="gst_byte_reader_peek_uint64_be"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read an unsigned 64 bit big endian integer into @val
+but keep the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #guint64 to store the result</doc>
+            <type name="guint64" c:type="guint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_uint64_le"
+              c:identifier="gst_byte_reader_peek_uint64_le"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read an unsigned 64 bit little endian integer into @val
+but keep the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #guint64 to store the result</doc>
+            <type name="guint64" c:type="guint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_uint8"
+              c:identifier="gst_byte_reader_peek_uint8"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Read an unsigned 8 bit integer into @val but keep the current position.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Pointer to a #guint8 to store the result</doc>
+            <type name="guint8" c:type="guint8*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_pos"
+              c:identifier="gst_byte_reader_set_pos"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Sets the new position of a #GstByteReader instance to @pos in bytes.
+otherwise.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the position could be set successfully, %FALSE</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pos" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The new position in bytes</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="skip"
+              c:identifier="gst_byte_reader_skip"
+              version="0.10.22">
+        <doc xml:whitespace="preserve">Skips @nbytes bytes of the #GstByteReader instance.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if @nbytes bytes could be skipped, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="nbytes" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes to skip</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="skip_string_utf16"
+              c:identifier="gst_byte_reader_skip_string_utf16"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Skips a NUL-terminated UTF-16 string in the #GstByteReader instance,
+advancing the current position to the byte after the string.
+No input checking for valid UTF-16 is done.
+This function will fail if no NUL-terminator was found in in the data.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if a string could be skipped, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="skip_string_utf32"
+              c:identifier="gst_byte_reader_skip_string_utf32"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Skips a NUL-terminated UTF-32 string in the #GstByteReader instance,
+advancing the current position to the byte after the string.
+No input checking for valid UTF-32 is done.
+This function will fail if no NUL-terminator was found in in the data.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if a string could be skipped, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="skip_string_utf8"
+              c:identifier="gst_byte_reader_skip_string_utf8"
+              version="0.10.24">
+        <doc xml:whitespace="preserve">Skips a NUL-terminated string in the #GstByteReader instance, advancing
+the current position to the byte after the string. This will work for
+any NUL-terminated string with a character width of 8 bits, so ASCII,
+UTF-8, ISO-8859-N etc. No input checking for valid UTF-8 is done.
+This function will fail if no NUL-terminator was found in in the data.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if a string could be skipped, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="ByteWriter" c:type="GstByteWriter">
+      <doc xml:whitespace="preserve">#GstByteWriter provides a byte writer and reader that can write/read different
+integer and floating point types to/from a memory buffer. It provides functions
+for writing/reading signed/unsigned, little/big endian integers of 8, 16, 24,
+32 and 64 bits and functions for reading little/big endian floating points numbers of
+32 and 64 bits. It also provides functions to write/read NUL-terminated strings
+in various character encodings.</doc>
+      <field name="parent" writable="1">
+        <type name="ByteReader" c:type="GstByteReader"/>
+      </field>
+      <field name="alloc_size" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="fixed" writable="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="owned" writable="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <method name="ensure_free_space"
+              c:identifier="gst_byte_writer_ensure_free_space"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Checks if enough free space from the current write cursor is
+available and reallocates if necessary.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if at least @size bytes are still available</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Number of bytes that should be available</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fill"
+              c:identifier="gst_byte_writer_fill"
+              version="0.10.27">
+        <doc xml:whitespace="preserve">Writes @size bytes containing @value to @writer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value could be written</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Value to be writen</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Number of bytes to be writen</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free"
+              c:identifier="gst_byte_writer_free"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Frees @writer and all memory allocated by it.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="free_and_get_buffer"
+              c:identifier="gst_byte_writer_free_and_get_buffer"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Frees @writer and all memory allocated by it except
+the current data, which is returned as #GstBuffer.
+after usage.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the current data as buffer. gst_buffer_unref()</doc>
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </return-value>
+      </method>
+      <method name="free_and_get_data"
+              c:identifier="gst_byte_writer_free_and_get_data"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Frees @writer and all memory allocated by it except
+the current data, which is returned.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the current data. g_free() after usage.</doc>
+          <type name="guint8" c:type="guint8*"/>
+        </return-value>
+      </method>
+      <method name="get_remaining"
+              c:identifier="gst_byte_writer_get_remaining"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Returns the remaining size of data that can still be written. If
+-1 is returned the remaining size is only limited by system resources.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the remaining size of data that can still be written</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="init"
+              c:identifier="gst_byte_writer_init"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Initializes @writer to an empty instance</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="init_with_buffer"
+              c:identifier="gst_byte_writer_init_with_buffer"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Initializes @writer with the given
+buffer. If @initialized is %TRUE it is possible to
+read the complete buffer from the #GstByteWriter from the beginning.
+&lt;note&gt;@buffer must be writable&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Buffer used for writing</doc>
+            <type name="Gst.Buffer" c:type="GstBuffer*"/>
+          </parameter>
+          <parameter name="initialized" transfer-ownership="none">
+            <doc xml:whitespace="preserve">If %TRUE the complete data can be read from the beginning</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="init_with_data"
+              c:identifier="gst_byte_writer_init_with_data"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Initializes @writer with the given
+memory area. If @initialized is %TRUE it is possible to
+read @size bytes from the #GstByteWriter from the beginning.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Memory area for writing</doc>
+            <array length="1" c:type="guint8*">
+              <type name="guint8" c:type="guint8"/>
+            </array>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Size of @data in bytes</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="initialized" transfer-ownership="none">
+            <doc xml:whitespace="preserve">If %TRUE the complete data can be read from the beginning</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="init_with_size"
+              c:identifier="gst_byte_writer_init_with_size"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Initializes @writer with the given initial data size.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Initial size of data</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="fixed" transfer-ownership="none">
+            <doc xml:whitespace="preserve">If %TRUE the data can't be reallocated</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_data"
+              c:identifier="gst_byte_writer_put_data"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Writes @size bytes of @data to @writer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value could be written</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Data to write</doc>
+            <array length="1" c:type="guint8*">
+              <type name="guint8" c:type="guint8"/>
+            </array>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Size of @data in bytes</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_float32_be"
+              c:identifier="gst_byte_writer_put_float32_be"
+              version="0.10.27">
+        <doc xml:whitespace="preserve">Writes a big endian 32 bit float to @writer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value could be written</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Value to write</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_float32_le"
+              c:identifier="gst_byte_writer_put_float32_le"
+              version="0.10.27">
+        <doc xml:whitespace="preserve">Writes a little endian 32 bit float to @writer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value could be written</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Value to write</doc>
+            <type name="gfloat" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_float64_be"
+              c:identifier="gst_byte_writer_put_float64_be"
+              version="0.10.27">
+        <doc xml:whitespace="preserve">Writes a big endian 64 bit float to @writer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value could be written</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Value to write</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_float64_le"
+              c:identifier="gst_byte_writer_put_float64_le"
+              version="0.10.27">
+        <doc xml:whitespace="preserve">Writes a little endian 64 bit float to @writer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value could be written</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Value to write</doc>
+            <type name="gdouble" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_int16_be"
+              c:identifier="gst_byte_writer_put_int16_be"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Writes a signed big endian 16 bit integer to @writer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value could be written</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Value to write</doc>
+            <type name="gint16" c:type="gint16"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_int16_le"
+              c:identifier="gst_byte_writer_put_int16_le"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Writes a signed little endian 16 bit integer to @writer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value could be written</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Value to write</doc>
+            <type name="gint16" c:type="gint16"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_int24_be"
+              c:identifier="gst_byte_writer_put_int24_be"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Writes a signed big endian 24 bit integer to @writer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value could be written</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Value to write</doc>
+            <type name="gint32" c:type="gint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_int24_le"
+              c:identifier="gst_byte_writer_put_int24_le"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Writes a signed little endian 24 bit integer to @writer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value could be written</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Value to write</doc>
+            <type name="gint32" c:type="gint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_int32_be"
+              c:identifier="gst_byte_writer_put_int32_be"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Writes a signed big endian 32 bit integer to @writer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value could be written</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Value to write</doc>
+            <type name="gint32" c:type="gint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_int32_le"
+              c:identifier="gst_byte_writer_put_int32_le"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Writes a signed little endian 32 bit integer to @writer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value could be written</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Value to write</doc>
+            <type name="gint32" c:type="gint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_int64_be"
+              c:identifier="gst_byte_writer_put_int64_be"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Writes a signed big endian 64 bit integer to @writer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value could be written</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Value to write</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_int64_le"
+              c:identifier="gst_byte_writer_put_int64_le"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Writes a signed little endian 64 bit integer to @writer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value could be written</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Value to write</doc>
+            <type name="gint64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_int8"
+              c:identifier="gst_byte_writer_put_int8"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Writes a signed 8 bit integer to @writer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value could be written</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Value to write</doc>
+            <type name="gint8" c:type="gint8"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_string_utf16"
+              c:identifier="gst_byte_writer_put_string_utf16"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Writes a NUL-terminated UTF16 string to @writer (including the terminator).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value could be written</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">UTF16 string to write</doc>
+            <array c:type="guint16*">
+              <type name="guint16" c:type="guint16"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_string_utf32"
+              c:identifier="gst_byte_writer_put_string_utf32"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Writes a NUL-terminated UTF32 string to @writer (including the terminator).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value could be written</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">UTF32 string to write</doc>
+            <array c:type="guint32*">
+              <type name="guint32" c:type="guint32"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_string_utf8"
+              c:identifier="gst_byte_writer_put_string_utf8"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Writes a NUL-terminated UTF8 string to @writer (including the terminator).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value could be written</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">UTF8 string to write</doc>
+            <array>
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_uint16_be"
+              c:identifier="gst_byte_writer_put_uint16_be"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Writes a unsigned big endian 16 bit integer to @writer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value could be written</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Value to write</doc>
+            <type name="guint16" c:type="guint16"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_uint16_le"
+              c:identifier="gst_byte_writer_put_uint16_le"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Writes a unsigned little endian 16 bit integer to @writer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value could be written</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Value to write</doc>
+            <type name="guint16" c:type="guint16"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_uint24_be"
+              c:identifier="gst_byte_writer_put_uint24_be"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Writes a unsigned big endian 24 bit integer to @writer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value could be written</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Value to write</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_uint24_le"
+              c:identifier="gst_byte_writer_put_uint24_le"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Writes a unsigned little endian 24 bit integer to @writer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value could be written</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Value to write</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_uint32_be"
+              c:identifier="gst_byte_writer_put_uint32_be"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Writes a unsigned big endian 32 bit integer to @writer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value could be written</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Value to write</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_uint32_le"
+              c:identifier="gst_byte_writer_put_uint32_le"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Writes a unsigned little endian 32 bit integer to @writer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value could be written</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Value to write</doc>
+            <type name="guint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_uint64_be"
+              c:identifier="gst_byte_writer_put_uint64_be"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Writes a unsigned big endian 64 bit integer to @writer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value could be written</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Value to write</doc>
+            <type name="guint64" c:type="guint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_uint64_le"
+              c:identifier="gst_byte_writer_put_uint64_le"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Writes a unsigned little endian 64 bit integer to @writer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value could be written</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Value to write</doc>
+            <type name="guint64" c:type="guint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_uint8"
+              c:identifier="gst_byte_writer_put_uint8"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Writes a unsigned 8 bit integer to @writer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the value could be written</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <doc xml:whitespace="preserve">Value to write</doc>
+            <type name="guint8" c:type="guint8"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reset"
+              c:identifier="gst_byte_writer_reset"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Resets @writer and frees the data if it's
+owned by @writer.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="reset_and_get_buffer"
+              c:identifier="gst_byte_writer_reset_and_get_buffer"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Resets @writer and returns the current data as buffer.
+after usage.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the current data as buffer. gst_buffer_unref()</doc>
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </return-value>
+      </method>
+      <method name="reset_and_get_data"
+              c:identifier="gst_byte_writer_reset_and_get_data"
+              version="0.10.26">
+        <doc xml:whitespace="preserve">Resets @writer and returns the current data.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the current data. g_free() after usage.</doc>
+          <type name="guint8" c:type="guint8*"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="CollectData" c:type="GstCollectData">
+      <doc xml:whitespace="preserve">Structure used by the collect_pads.</doc>
+      <field name="collect" writable="1">
+        <type name="CollectPads" c:type="GstCollectPads*"/>
+      </field>
+      <field name="pad" writable="1">
+        <type name="Gst.Pad" c:type="GstPad*"/>
+      </field>
+      <field name="buffer" writable="1">
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </field>
+      <field name="pos" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="segment" writable="1">
+        <type name="Gst.Segment" c:type="GstSegment"/>
+      </field>
+      <union name="abidata" c:type="abidata">
+        <record name="ABI" c:type="ABI">
+          <field name="flushing" writable="1">
+            <type name="gboolean" c:type="gboolean"/>
+          </field>
+          <field name="new_segment" writable="1">
+            <type name="gboolean" c:type="gboolean"/>
+          </field>
+          <field name="eos" writable="1">
+            <type name="gboolean" c:type="gboolean"/>
+          </field>
+          <field name="refcount" writable="1">
+            <type name="gint" c:type="gint"/>
+          </field>
+        </record>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </field>
+      </union>
+    </record>
+    <callback name="CollectDataDestroyNotify"
+              c:type="GstCollectDataDestroyNotify"
+              version="0.10.12">
+      <doc xml:whitespace="preserve">A function that will be called when the #GstCollectData will be freed.
+It is passed the pointer to the structure and should free any custom
+memory and resources allocated for it.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstCollectData that will be freed</doc>
+          <type name="CollectData" c:type="GstCollectData*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="CollectPads"
+           c:symbol-prefix="collect_pads"
+           c:type="GstCollectPads"
+           parent="Gst.Object"
+           glib:type-name="GstCollectPads"
+           glib:get-type="gst_collect_pads_get_type"
+           glib:type-struct="CollectPadsClass">
+      <doc xml:whitespace="preserve">Manages a set of pads that operate in collect mode. This means that control
+is given to the manager of this object when all pads have data.
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;
+Collectpads are created with gst_collect_pads_new(). A callback should then
+be installed with gst_collect_pads_set_function ().
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Pads are added to the collection with gst_collect_pads_add_pad()/
+gst_collect_pads_remove_pad(). The pad
+has to be a sinkpad. The chain and event functions of the pad are
+overridden. The element_private of the pad is used to store
+private information for the collectpads.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+For each pad, data is queued in the _chain function or by
+performing a pull_range.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+When data is queued on all pads, the callback function is called.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Data can be dequeued from the pad with the gst_collect_pads_pop() method.
+One can peek at the data with the gst_collect_pads_peek() function.
+These functions will return NULL if the pad received an EOS event. When all
+pads return NULL from a gst_collect_pads_peek(), the element can emit an EOS
+event itself.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Data can also be dequeued in byte units using the gst_collect_pads_available(),
+gst_collect_pads_read() and gst_collect_pads_flush() calls.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Elements should call gst_collect_pads_start() and gst_collect_pads_stop() in
+their state change functions to start and stop the processing of the collecpads.
+The gst_collect_pads_stop() call should be called before calling the parent
+element state change function in the PAUSED_TO_READY state change to ensure
+no pad is blocked and the element can finish streaming.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+gst_collect_pads_collect() and gst_collect_pads_collect_range() can be used by
+elements that start a #GstTask to drive the collect_pads. This feature is however
+not yet implemented.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+Last reviewed on 2006-05-10 (0.10.6)</doc>
+      <constructor name="new" c:identifier="gst_collect_pads_new">
+        <doc xml:whitespace="preserve">Create a new instance of #GstCollectPads.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstCollectPads, or NULL in case of an error.</doc>
+          <type name="CollectPads" c:type="GstCollectPads*"/>
+        </return-value>
+      </constructor>
+      <method name="add_pad"
+              c:identifier="gst_collect_pads_add_pad"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Add a pad to the collection of collect pads. The pad has to be
+a sinkpad. The refcount of the pad is incremented. Use
+gst_collect_pads_remove_pad() to remove the pad from the collection
+again.
+This function will override the chain and event functions of the pad
+along with the element_private data, which is used to store private
+information for the collectpads.
+You specify a size for the returned #GstCollectData structure
+so that you can use it to store additional information.
+The pad will be automatically activated in push mode when @pads is
+started.
+This function calls gst_collect_pads_add_pad_full() passing a value of NULL
+for destroy_notify.
+MT safe.
+if wrong parameters are supplied.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a new #GstCollectData to identify the new pad. Or NULL</doc>
+          <type name="CollectData" c:type="GstCollectData*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the pad to add</doc>
+            <type name="Gst.Pad" c:type="GstPad*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the size of the returned #GstCollectData structure</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_pad_full"
+              c:identifier="gst_collect_pads_add_pad_full"
+              version="0.10.12"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Add a pad to the collection of collect pads. The pad has to be
+a sinkpad. The refcount of the pad is incremented. Use
+gst_collect_pads_remove_pad() to remove the pad from the collection
+again.
+You specify a size for the returned #GstCollectData structure
+so that you can use it to store additional information.
+You can also specify a #GstCollectDataDestroyNotify that will be called
+just before the #GstCollectData structure is freed. It is passed the
+pointer to the structure and should free any custom memory and resources
+allocated for it.
+The pad will be automatically activated in push mode when @pads is
+started.
+MT safe.
+if wrong parameters are supplied.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a new #GstCollectData to identify the new pad. Or NULL</doc>
+          <type name="CollectData" c:type="GstCollectData*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the pad to add</doc>
+            <type name="Gst.Pad" c:type="GstPad*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the size of the returned #GstCollectData structure</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+          <parameter name="destroy_notify" transfer-ownership="none">
+            <doc xml:whitespace="preserve">function to be called before the returned #GstCollectData structure is freed</doc>
+            <type name="CollectDataDestroyNotify"
+                  c:type="GstCollectDataDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="available" c:identifier="gst_collect_pads_available">
+        <doc xml:whitespace="preserve">Query how much bytes can be read from each queued buffer. This means
+that the result of this call is the maximum number of bytes that can
+be read from each of the pads.
+This function should be called with @pads LOCK held, such as
+in the callback.
+MT safe.
+returns 0 if a pad has no queued buffer.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The maximum number of bytes queued on all pads. This function</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="collect" c:identifier="gst_collect_pads_collect">
+        <doc xml:whitespace="preserve">Collect data on all pads. This function is usually called
+from a #GstTask function in an element.
+This function is currently not implemented.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">#GstFlowReturn of the operation.</doc>
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+      </method>
+      <method name="collect_range"
+              c:identifier="gst_collect_pads_collect_range">
+        <doc xml:whitespace="preserve">Collect data with @offset and @length on all pads. This function
+is typically called in the getrange function of an element.
+This function is currently not implemented.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">#GstFlowReturn of the operation.</doc>
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the offset to collect</doc>
+            <type name="guint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the length to collect</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="flush" c:identifier="gst_collect_pads_flush">
+        <doc xml:whitespace="preserve">Flush @size bytes from the pad @data.
+This function should be called with @pads LOCK held, such as
+in the callback.
+MT safe.
+is 0 if the pad was end-of-stream.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of bytes flushed. This can be less than @size and</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to use</doc>
+            <type name="CollectData" c:type="GstCollectData*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes to flush</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_active" c:identifier="gst_collect_pads_is_active">
+        <doc xml:whitespace="preserve">Check if a pad is active.
+This function is currently not implemented.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the pad is active.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the pad to check</doc>
+            <type name="Gst.Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek" c:identifier="gst_collect_pads_peek">
+        <doc xml:whitespace="preserve">Peek at the buffer currently queued in @data. This function
+should be called with the @pads LOCK held, such as in the callback
+handler.
+MT safe.
+should unref the buffer after usage.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The buffer in @data or NULL if no buffer is queued.</doc>
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to use</doc>
+            <type name="CollectData" c:type="GstCollectData*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pop" c:identifier="gst_collect_pads_pop">
+        <doc xml:whitespace="preserve">Pop the buffer currently queued in @data. This function
+should be called with the @pads LOCK held, such as in the callback
+handler.
+MT safe.
+queued. You should unref the buffer after usage.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">The buffer in @data or NULL if no buffer was</doc>
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to use</doc>
+            <type name="CollectData" c:type="GstCollectData*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read" c:identifier="gst_collect_pads_read">
+        <doc xml:whitespace="preserve">Get a pointer in @bytes where @size bytes can be read from the
+given pad @data.
+This function should be called with @pads LOCK held, such as
+in the callback.
+MT safe.
+memory pointed to by @bytes. This can be less than @size and
+is 0 if the pad is end-of-stream.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of bytes available for consumption in the</doc>
+          <type name="guint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to use</doc>
+            <type name="CollectData" c:type="GstCollectData*"/>
+          </parameter>
+          <parameter name="bytes"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to a byte array</doc>
+            <array length="2" c:type="guint8**">
+              <type name="guint8" c:type="guint8*"/>
+            </array>
+          </parameter>
+          <parameter name="size"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full">
+            <doc xml:whitespace="preserve">the number of bytes to read</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_buffer"
+              c:identifier="gst_collect_pads_read_buffer"
+              version="0.10.18">
+        <doc xml:whitespace="preserve">Get a buffer of @size bytes from the given pad @data.
+This function should be called with @pads LOCK held, such as in the callback.
+that requested. A return of NULL signals that the pad is end-of-stream.
+Unref the buffer with gst_buffer_unref() after use.
+MT safe.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GstBuffer. The size of the buffer can be less</doc>
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to use</doc>
+            <type name="CollectData" c:type="GstCollectData*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes to read</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_pad" c:identifier="gst_collect_pads_remove_pad">
+        <doc xml:whitespace="preserve">Remove a pad from the collection of collect pads. This function will also
+free the #GstCollectData and all the resources that were allocated with
+gst_collect_pads_add_pad().
+The pad will be deactivated automatically when @pads is stopped.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the pad could be removed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the pad to remove</doc>
+            <type name="Gst.Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_clip_function"
+              c:identifier="gst_collect_pads_set_clip_function"
+              version="0.10.26"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Install a clipping function that is called right after a buffer is received
+on a pad managed by @pads. See #GstCollectPadsClipFunction for more info.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="clipfunc" transfer-ownership="none" closure="1">
+            <doc xml:whitespace="preserve">clip function to install</doc>
+            <type name="CollectPadsClipFunction"
+                  c:type="GstCollectPadsClipFunction"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data to pass to @clip_func</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_flushing"
+              c:identifier="gst_collect_pads_set_flushing"
+              version="0.10.7.">
+        <doc xml:whitespace="preserve">Change the flushing state of all the pads in the collection. No pad
+is able to accept anymore data when @flushing is %TRUE. Calling this
+function with @flushing %FALSE makes @pads accept data again.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flushing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">desired state of the pads</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_function"
+              c:identifier="gst_collect_pads_set_function"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Set the callback function and user data that will be called when
+all the pads added to the collection have buffers queued.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none" closure="1">
+            <doc xml:whitespace="preserve">the function to set</doc>
+            <type name="CollectPadsFunction" c:type="GstCollectPadsFunction"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">user data passed to the function</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="start" c:identifier="gst_collect_pads_start">
+        <doc xml:whitespace="preserve">Starts the processing of data in the collect_pads.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="stop" c:identifier="gst_collect_pads_stop">
+        <doc xml:whitespace="preserve">Stops the processing of data in the collect_pads. this function
+will also unblock any blocking operations.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="take_buffer"
+              c:identifier="gst_collect_pads_take_buffer"
+              version="0.10.18">
+        <doc xml:whitespace="preserve">Get a buffer of @size bytes from the given pad @data. Flushes the amount
+of read bytes.
+This function should be called with @pads LOCK held, such as in the callback.
+MT safe.
+that requested. A return of NULL signals that the pad is end-of-stream.
+Unref the buffer after use.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a #GstBuffer. The size of the buffer can be less</doc>
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the data to use</doc>
+            <type name="CollectData" c:type="GstCollectData*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the number of bytes to read</doc>
+            <type name="guint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="Gst.Object" c:type="GstObject"/>
+      </field>
+      <field name="data">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="cookie" readable="0" private="1">
+        <type name="guint32" c:type="guint32"/>
+      </field>
+      <field name="cond" readable="0" private="1">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="func" readable="0" private="1">
+        <type name="CollectPadsFunction" c:type="GstCollectPadsFunction"/>
+      </field>
+      <field name="user_data" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer"/>
+      </field>
+      <field name="numpads" readable="0" private="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="queuedpads" readable="0" private="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="eospads" readable="0" private="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="started" readable="0" private="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <union name="abidata" c:type="abidata">
+        <record name="ABI" c:type="ABI">
+          <field name="pad_lock" writable="1">
+            <type name="GLib.Mutex" c:type="GMutex*"/>
+          </field>
+          <field name="pad_list" writable="1">
+            <type name="GLib.SList" c:type="GSList*">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </field>
+          <field name="pad_cookie" writable="1">
+            <type name="guint32" c:type="guint32"/>
+          </field>
+          <field name="priv" writable="1">
+            <type name="CollectPadsPrivate" c:type="GstCollectPadsPrivate*"/>
+          </field>
+        </record>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </field>
+      </union>
+    </class>
+    <record name="CollectPadsClass"
+            c:type="GstCollectPadsClass"
+            glib:is-gtype-struct-for="CollectPads">
+      <field name="parent_class">
+        <type name="Gst.ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <callback name="CollectPadsClipFunction"
+              c:type="GstCollectPadsClipFunction"
+              version="0.10.26"
+              introspectable="0">
+      <doc xml:whitespace="preserve">A function that will be called when @buffer is received on the pad managed
+by @data in the collecpad object @pads.
+The function should use the segment of @data and the negotiated media type on
+the pad to perform clipping of @buffer. 
+This function takes ownership of @buffer.
+the buffer has been clipped completely.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">a #GstBuffer that contains the clipped data of @buffer or NULL when</doc>
+        <type name="Gst.Buffer" c:type="GstBuffer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pads" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GstCollectPads</doc>
+          <type name="CollectPads" c:type="GstCollectPads*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GstCollectData</doc>
+          <type name="CollectData" c:type="GstCollectData*"/>
+        </parameter>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GstBuffer</doc>
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <doc xml:whitespace="preserve">user data</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="CollectPadsFunction" c:type="GstCollectPadsFunction">
+      <doc xml:whitespace="preserve">A function that will be called when all pads have received data.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">#GST_FLOW_OK for success</doc>
+        <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+      </return-value>
+      <parameters>
+        <parameter name="pads" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstCollectPads that triggered the callback</doc>
+          <type name="CollectPads" c:type="GstCollectPads*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <doc xml:whitespace="preserve">user data passed to gst_collect_pads_set_function()</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="CollectPadsPrivate"
+            c:type="GstCollectPadsPrivate"
+            disguised="1">
+    </record>
+    <class name="DataQueue"
+           c:symbol-prefix="data_queue"
+           c:type="GstDataQueue"
+           version="0.10.11"
+           parent="GObject.Object"
+           glib:type-name="GstDataQueue"
+           glib:get-type="gst_data_queue_get_type"
+           glib:type-struct="DataQueueClass">
+      <doc xml:whitespace="preserve">#GstDataQueue is an object that handles threadsafe queueing of objects. It
+also provides size-related functionality. This object should be used for
+any #GstElement that wishes to provide some sort of queueing functionality.</doc>
+      <constructor name="new"
+                   c:identifier="gst_data_queue_new"
+                   introspectable="0">
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstDataQueue.</doc>
+          <type name="DataQueue" c:type="GstDataQueue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="checkfull" transfer-ownership="none" closure="1">
+            <doc xml:whitespace="preserve">the callback used to tell if the element considers the queue full or not.</doc>
+            <type name="DataQueueCheckFullFunction"
+                  c:type="GstDataQueueCheckFullFunction"/>
+          </parameter>
+          <parameter name="checkdata" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gpointer that will be given in the @checkfull callback.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_full"
+                   c:identifier="gst_data_queue_new_full"
+                   version="0.10.26"
+                   introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new #GstDataQueue. The difference with @gst_data_queue_new is that it will
+not emit the 'full' and 'empty' signals, but instead calling directly @fullcallback
+or @emptycallback.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstDataQueue.</doc>
+          <type name="DataQueue" c:type="GstDataQueue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="checkfull" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the callback used to tell if the element considers the queue full or not.</doc>
+            <type name="DataQueueCheckFullFunction"
+                  c:type="GstDataQueueCheckFullFunction"/>
+          </parameter>
+          <parameter name="fullcallback" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the callback which will be called when the queue is considered full.</doc>
+            <type name="DataQueueFullCallback"
+                  c:type="GstDataQueueFullCallback"/>
+          </parameter>
+          <parameter name="emptycallback"
+                     transfer-ownership="none"
+                     closure="3">
+            <doc xml:whitespace="preserve">the callback which will be called when the queue is considered empty.</doc>
+            <type name="DataQueueEmptyCallback"
+                  c:type="GstDataQueueEmptyCallback"/>
+          </parameter>
+          <parameter name="checkdata" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gpointer that will be given in the @checkfull callback.</doc>
+            <type name="gpointer" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="empty">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="full">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <method name="drop_head"
+              c:identifier="gst_data_queue_drop_head"
+              version="0.10.11">
+        <doc xml:whitespace="preserve">Pop and unref the head-most #GstMiniObject with the given #GType.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">TRUE if an element was removed.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <doc xml:whitespace="preserve">The #GType of the item to drop.</doc>
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="flush"
+              c:identifier="gst_data_queue_flush"
+              version="0.10.11">
+        <doc xml:whitespace="preserve">Flushes all the contents of the @queue. Any call to #gst_data_queue_push and
+#gst_data_queue_pop will be released.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_level"
+              c:identifier="gst_data_queue_get_level"
+              version="0.10.11">
+        <doc xml:whitespace="preserve">Get the current level of the queue.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="level" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the location to store the result</doc>
+            <type name="DataQueueSize" c:type="GstDataQueueSize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_empty"
+              c:identifier="gst_data_queue_is_empty"
+              version="0.10.11">
+        <doc xml:whitespace="preserve">Queries if there are any items in the @queue.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">#TRUE if @queue is empty.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_full"
+              c:identifier="gst_data_queue_is_full"
+              version="0.10.11">
+        <doc xml:whitespace="preserve">Queries if @queue is full. This check will be done using the
+#GstDataQueueCheckFullFunction registered with @queue.
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">#TRUE if @queue is full.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="limits_changed"
+              c:identifier="gst_data_queue_limits_changed"
+              version="0.10.11">
+        <doc xml:whitespace="preserve">Inform the queue that the limits for the fullness check have changed and that
+any blocking gst_data_queue_push() should be unblocked to recheck the limts.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="pop" c:identifier="gst_data_queue_pop" version="0.10.11">
+        <doc xml:whitespace="preserve">Retrieves the first @item available on the @queue. If the queue is currently
+empty, the call will block until at least one item is available, OR the
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">#TRUE if an @item was successfully retrieved from the @queue.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="item" transfer-ownership="none">
+            <doc xml:whitespace="preserve">pointer to store the returned #GstDataQueueItem.</doc>
+            <type name="DataQueueItem" c:type="GstDataQueueItem**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="push" c:identifier="gst_data_queue_push" version="0.10.11">
+        <doc xml:whitespace="preserve">Pushes a #GstDataQueueItem (or a structure that begins with the same fields)
+on the @queue. If the @queue is full, the call will block until space is
+available, OR the @queue is set to flushing state.
+MT safe.
+Note that this function has slightly different semantics than gst_pad_push()
+the #GstMiniObject contained in @item if the push was successful. If FALSE
+is returned, the caller is responsible for freeing @item and its contents.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">#TRUE if the @item was successfully pushed on the @queue.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="item" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstDataQueueItem.</doc>
+            <type name="DataQueueItem" c:type="GstDataQueueItem*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_flushing"
+              c:identifier="gst_data_queue_set_flushing"
+              version="0.10.11">
+        <doc xml:whitespace="preserve">Sets the queue to flushing state if @flushing is #TRUE. If set to flushing
+state, any incoming data on the @queue will be discarded. Any call currently
+blocking on #gst_data_queue_push or #gst_data_queue_pop will return straight
+away with a return value of #FALSE. While the @queue is in flushing state, 
+all calls to those two functions will return #FALSE.
+MT Safe.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flushing" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #gboolean stating if the queue will be flushing or not.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="current-level-bytes" transfer-ownership="none">
+        <type name="guint"/>
+      </property>
+      <property name="current-level-time" transfer-ownership="none">
+        <type name="guint64"/>
+      </property>
+      <property name="current-level-visible" transfer-ownership="none">
+        <type name="guint"/>
+      </property>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="queue" readable="0" private="1">
+        <type name="GLib.Queue" c:type="GQueue*"/>
+      </field>
+      <field name="cur_level" readable="0" private="1">
+        <type name="DataQueueSize" c:type="GstDataQueueSize"/>
+      </field>
+      <field name="checkfull" readable="0" private="1">
+        <type name="DataQueueCheckFullFunction"
+              c:type="GstDataQueueCheckFullFunction"/>
+      </field>
+      <field name="checkdata" readable="0" private="1">
+        <type name="gpointer" c:type="gpointer*"/>
+      </field>
+      <field name="qlock" readable="0" private="1">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="item_add" readable="0" private="1">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="item_del" readable="0" private="1">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="flushing" readable="0" private="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="fullcallback" readable="0" private="1">
+        <type name="DataQueueFullCallback" c:type="GstDataQueueFullCallback"/>
+      </field>
+      <field name="emptycallback" readable="0" private="1">
+        <type name="DataQueueEmptyCallback"
+              c:type="GstDataQueueEmptyCallback"/>
+      </field>
+      <union name="abidata" c:type="abidata">
+        <record name="ABI" c:type="ABI">
+          <field name="waiting_add" writable="1">
+            <type name="gboolean" c:type="gboolean"/>
+          </field>
+          <field name="waiting_del" writable="1">
+            <type name="gboolean" c:type="gboolean"/>
+          </field>
+        </record>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+            <type name="gpointer" c:type="gpointer"/>
+          </array>
+        </field>
+      </union>
+      <glib:signal name="empty">
+        <doc xml:whitespace="preserve">Reports that the queue became empty (empty).
+A queue is empty if the total amount of visible items inside it (num-visible, time,
+size) is lower than the boundary values which can be set through the GObject
+properties.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="full">
+        <doc xml:whitespace="preserve">Reports that the queue became full (full).
+A queue is full if the total amount of data inside it (num-visible, time,
+size) is higher than the boundary values which can be set through the GObject
+properties.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <callback name="DataQueueCheckFullFunction"
+              c:type="GstDataQueueCheckFullFunction"
+              version="0.10.11">
+      <doc xml:whitespace="preserve">The prototype of the function used to inform the queue that it should be
+considered as full.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">#TRUE if the queue should be considered full.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GstDataQueue.</doc>
+          <type name="DataQueue" c:type="GstDataQueue*"/>
+        </parameter>
+        <parameter name="visible" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The number of visible items currently in the queue.</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="bytes" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The amount of bytes currently in the queue.</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="time" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The accumulated duration of the items currently in the queue.</doc>
+          <type name="guint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="checkdata" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The #gpointer registered when the #GstDataQueue was created.</doc>
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="DataQueueClass"
+            c:type="GstDataQueueClass"
+            glib:is-gtype-struct-for="DataQueue">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="empty">
+        <callback name="empty">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="queue" transfer-ownership="none">
+              <type name="DataQueue" c:type="GstDataQueue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="full">
+        <callback name="full">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="queue" transfer-ownership="none">
+              <type name="DataQueue" c:type="GstDataQueue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <callback name="DataQueueEmptyCallback" c:type="GstDataQueueEmptyCallback">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="DataQueue" c:type="GstDataQueue*"/>
+        </parameter>
+        <parameter name="checkdata" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="DataQueueFullCallback" c:type="GstDataQueueFullCallback">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="DataQueue" c:type="GstDataQueue*"/>
+        </parameter>
+        <parameter name="checkdata" transfer-ownership="none">
+          <type name="gpointer" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="DataQueueItem" c:type="GstDataQueueItem" version="0.10.11">
+      <doc xml:whitespace="preserve">Structure used by #GstDataQueue. You can supply a different structure, as
+long as the top of the structure is identical to this structure.</doc>
+      <field name="object" writable="1">
+        <type name="Gst.MiniObject" c:type="GstMiniObject*"/>
+      </field>
+      <field name="size" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="duration" writable="1">
+        <type name="guint64" c:type="guint64"/>
+      </field>
+      <field name="visible" writable="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="destroy" writable="1">
+        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+      </field>
+    </record>
+    <record name="DataQueueSize" c:type="GstDataQueueSize" version="0.10.11">
+      <doc xml:whitespace="preserve">Structure describing the size of a queue.</doc>
+      <field name="visible" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="bytes" writable="1">
+        <type name="guint" c:type="guint"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="guint64" c:type="guint64"/>
+      </field>
+    </record>
+    <class name="PushSrc"
+           c:symbol-prefix="push_src"
+           c:type="GstPushSrc"
+           parent="BaseSrc"
+           glib:type-name="GstPushSrc"
+           glib:get-type="gst_push_src_get_type"
+           glib:type-struct="PushSrcClass">
+      <doc xml:whitespace="preserve">This class is mostly useful for elements that cannot do
+random access, or at least very slowly. The source usually
+prefers to push out a fixed size buffer.
+Subclasses usually operate in a format that is different from the
+default GST_FORMAT_BYTES format of #GstBaseSrc.
+Classes extending this base class will usually be scheduled
+in a push based mode. If the peer accepts to operate without
+offsets and within the limits of the allowed block size, this
+class can operate in getrange based mode automatically. To make
+this possible, the subclass should override the ::check_get_range
+method.
+The subclass should extend the methods from the baseclass in
+addition to the ::create method.
+Seeking, flushing, scheduling and sync is all handled by this
+base class.
+Last reviewed on 2006-07-04 (0.10.9)</doc>
+      <virtual-method name="create">
+        <return-value transfer-ownership="none">
+          <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="buf" transfer-ownership="none">
+            <type name="Gst.Buffer" c:type="GstBuffer**"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <field name="parent">
+        <type name="BaseSrc" c:type="GstBaseSrc"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </class>
+    <record name="PushSrcClass"
+            c:type="GstPushSrcClass"
+            glib:is-gtype-struct-for="PushSrc">
+      <field name="parent_class">
+        <type name="BaseSrcClass" c:type="GstBaseSrcClass"/>
+      </field>
+      <field name="create">
+        <callback name="create">
+          <return-value transfer-ownership="none">
+            <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="src" transfer-ownership="none">
+              <type name="PushSrc" c:type="GstPushSrc*"/>
+            </parameter>
+            <parameter name="buf" transfer-ownership="none">
+              <type name="Gst.Buffer" c:type="GstBuffer**"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <callback name="TypeFindHelperGetRangeFunction"
+              c:type="GstTypeFindHelperGetRangeFunction">
+      <doc xml:whitespace="preserve">This function will be called by gst_type_find_helper_get_range() when
+typefinding functions request to peek at the data of a stream at certain
+offsets. If this function returns GST_FLOW_OK, the result buffer will be
+stored in @buffer. The  contents of @buffer is invalid for any other
+return value.
+This function is supposed to behave exactly like a #GstPadGetRangeFunction.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">GST_FLOW_OK for success</doc>
+        <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
+      </return-value>
+      <parameters>
+        <parameter name="obj" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GstObject that will handle the getrange request</doc>
+          <type name="Gst.Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="offset" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the offset of the range</doc>
+          <type name="guint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the length of the range</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a memory location to hold the result buffer</doc>
+          <type name="Gst.Buffer" c:type="GstBuffer**"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <function name="bit_reader_new"
+              c:identifier="gst_bit_reader_new"
+              version="0.10.22"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new #GstBitReader instance, which will read from @data.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new #GstBitReader instance</doc>
+        <type name="BitReader" c:type="GstBitReader*"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Data from which the #GstBitReader should read</doc>
+          <type name="guint8" c:type="guint8*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Size of @data in bytes</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bit_reader_new_from_buffer"
+              c:identifier="gst_bit_reader_new_from_buffer"
+              version="0.10.22"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new #GstBitReader instance, which will read from the
+#GstBuffer @buffer.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new #GstBitReader instance</doc>
+        <type name="BitReader" c:type="GstBitReader*"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Buffer from which the #GstBitReader should read</doc>
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="byte_reader_new"
+              c:identifier="gst_byte_reader_new"
+              version="0.10.22"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new #GstByteReader instance, which will read from @data.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new #GstByteReader instance</doc>
+        <type name="ByteReader" c:type="GstByteReader*"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">data from which the #GstByteReader should read</doc>
+          <array length="1" c:type="guint8*">
+            <type name="guint8" c:type="guint8"/>
+          </array>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Size of @data in bytes</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="byte_reader_new_from_buffer"
+              c:identifier="gst_byte_reader_new_from_buffer"
+              version="0.10.22"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Create a new #GstByteReader instance, which will read from the
+#GstBuffer @buffer.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new #GstByteReader instance</doc>
+        <type name="ByteReader" c:type="GstByteReader*"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Buffer from which the #GstByteReader should read</doc>
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="byte_writer_new"
+              c:identifier="gst_byte_writer_new"
+              version="0.10.26"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new, empty #GstByteWriter instance</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new, empty #GstByteWriter instance</doc>
+        <type name="ByteWriter" c:type="GstByteWriter*"/>
+      </return-value>
+    </function>
+    <function name="byte_writer_new_with_buffer"
+              c:identifier="gst_byte_writer_new_with_buffer"
+              version="0.10.26"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new #GstByteWriter instance with the given
+buffer. If @initialized is %TRUE it is possible to
+read the complete buffer from the #GstByteWriter from the beginning.
+&lt;note&gt;@buffer must be writable&lt;/note&gt;</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new #GstByteWriter instance</doc>
+        <type name="ByteWriter" c:type="GstByteWriter*"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Buffer used for writing</doc>
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="initialized" transfer-ownership="none">
+          <doc xml:whitespace="preserve">If %TRUE the complete data can be read from the beginning</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="byte_writer_new_with_data"
+              c:identifier="gst_byte_writer_new_with_data"
+              version="0.10.26"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new #GstByteWriter instance with the given
+memory area. If @initialized is %TRUE it is possible to
+read @size bytes from the #GstByteWriter from the beginning.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new #GstByteWriter instance</doc>
+        <type name="ByteWriter" c:type="GstByteWriter*"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Memory area for writing</doc>
+          <type name="guint8" c:type="guint8*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Size of @data in bytes</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="initialized" transfer-ownership="none">
+          <doc xml:whitespace="preserve">If %TRUE the complete data can be read from the beginning</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="byte_writer_new_with_size"
+              c:identifier="gst_byte_writer_new_with_size"
+              version="0.10.26"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new #GstByteWriter instance with the given
+initial data size.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">a new #GstByteWriter instance</doc>
+        <type name="ByteWriter" c:type="GstByteWriter*"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">Initial size of data</doc>
+          <type name="guint" c:type="guint"/>
+        </parameter>
+        <parameter name="fixed" transfer-ownership="none">
+          <doc xml:whitespace="preserve">If %TRUE the data can't be reallocated</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_find_helper" c:identifier="gst_type_find_helper">
+      <doc xml:whitespace="preserve">Tries to find what type of data is flowing from the given source #GstPad.
+Returns #NULL if no #GstCaps matches the data stream.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">the #GstCaps corresponding to the data stream.</doc>
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="src" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A source #GstPad</doc>
+          <type name="Gst.Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The length in bytes</doc>
+          <type name="guint64" c:type="guint64"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_find_helper_for_buffer"
+              c:identifier="gst_type_find_helper_for_buffer">
+      <doc xml:whitespace="preserve">Tries to find what type of data is contained in the given #GstBuffer, the
+assumption being that the buffer represents the beginning of the stream or
+file.
+All available typefinders will be called on the data in order of rank. If
+a typefinding function returns a probability of #GST_TYPE_FIND_MAXIMUM,
+typefinding is stopped immediately and the found caps will be returned
+right away. Otherwise, all available typefind functions will the tried,
+and the caps with the highest probability will be returned, or #NULL if
+the content of the buffer could not be identified.
+if no type could be found. The caller should free the caps returned
+with gst_caps_unref().</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">the #GstCaps corresponding to the data, or #NULL</doc>
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="obj" transfer-ownership="none">
+          <doc xml:whitespace="preserve">object doing the typefinding, or NULL (used for logging)</doc>
+          <type name="Gst.Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="buf" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GstBuffer with data to typefind</doc>
+          <type name="Gst.Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="prob"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">location to store the probability of the found caps, or #NULL</doc>
+          <type name="Gst.TypeFindProbability"
+                c:type="GstTypeFindProbability*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_find_helper_for_extension"
+              c:identifier="gst_type_find_helper_for_extension"
+              version="0.10.23">
+      <doc xml:whitespace="preserve">Tries to find the best #GstCaps associated with @extension.
+All available typefinders will be checked against the extension in order
+of rank. The caps of the first typefinder that can handle @extension will be
+returned.
+#NULL if no type could be found. The caller should free the caps
+returned with gst_caps_unref().</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">the #GstCaps corresponding to @extension, or</doc>
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="obj" transfer-ownership="none" allow-none="1">
+          <doc xml:whitespace="preserve">object doing the typefinding, or NULL (used for logging)</doc>
+          <type name="Gst.Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="extension" transfer-ownership="none">
+          <doc xml:whitespace="preserve">an extension</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_find_helper_get_range"
+              c:identifier="gst_type_find_helper_get_range">
+      <doc xml:whitespace="preserve">Utility function to do pull-based typefinding. Unlike gst_type_find_helper()
+however, this function will use the specified function @func to obtain the
+data needed by the typefind functions, rather than operating on a given
+source pad. This is useful mostly for elements like tag demuxers which
+strip off data at the beginning and/or end of a file and want to typefind
+the stripped data stream before adding their own source pad (the specified
+callback can then call the upstream peer pad with offsets adjusted for the
+tag size, for example).
+Returns #NULL if no #GstCaps matches the data stream.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">the #GstCaps corresponding to the data stream.</doc>
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="obj" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GstObject that will be passed as first argument to @func</doc>
+          <type name="Gst.Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <doc xml:whitespace="preserve">A generic #GstTypeFindHelperGetRangeFunction that will be used to access data at random offsets when doing the typefinding</doc>
+          <type name="TypeFindHelperGetRangeFunction"
+                c:type="GstTypeFindHelperGetRangeFunction"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The length in bytes</doc>
+          <type name="guint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="prob"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">location to store the probability of the found caps, or #NULL</doc>
+          <type name="Gst.TypeFindProbability"
+                c:type="GstTypeFindProbability*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_find_helper_get_range_ext"
+              c:identifier="gst_type_find_helper_get_range_ext"
+              version="0.10.26">
+      <doc xml:whitespace="preserve">Utility function to do pull-based typefinding. Unlike gst_type_find_helper()
+however, this function will use the specified function @func to obtain the
+data needed by the typefind functions, rather than operating on a given
+source pad. This is useful mostly for elements like tag demuxers which
+strip off data at the beginning and/or end of a file and want to typefind
+the stripped data stream before adding their own source pad (the specified
+callback can then call the upstream peer pad with offsets adjusted for the
+tag size, for example).
+When @extension is not NULL, this function will first try the typefind
+functions for the given extension, which might speed up the typefinding
+in many cases.
+Returns #NULL if no #GstCaps matches the data stream.</doc>
+      <return-value transfer-ownership="full">
+        <doc xml:whitespace="preserve">the #GstCaps corresponding to the data stream.</doc>
+        <type name="Gst.Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="obj" transfer-ownership="none">
+          <doc xml:whitespace="preserve">A #GstObject that will be passed as first argument to @func</doc>
+          <type name="Gst.Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <doc xml:whitespace="preserve">A generic #GstTypeFindHelperGetRangeFunction that will be used to access data at random offsets when doing the typefinding</doc>
+          <type name="TypeFindHelperGetRangeFunction"
+                c:type="GstTypeFindHelperGetRangeFunction"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <doc xml:whitespace="preserve">The length in bytes</doc>
+          <type name="guint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="extension" transfer-ownership="none">
+          <doc xml:whitespace="preserve">extension of the media</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="prob"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   allow-none="1">
+          <doc xml:whitespace="preserve">location to store the probability of the found caps, or #NULL</doc>
+          <type name="Gst.TypeFindProbability"
+                c:type="GstTypeFindProbability*"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/gstreamer/controller/GstController-0.10.gir b/extra/gstreamer/controller/GstController-0.10.gir
new file mode 100644 (file)
index 0000000..f141526
--- /dev/null
@@ -0,0 +1,1249 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.2"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gst" version="0.10"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="gstreamer-controller-0.10"/>
+  <c:include name="gst/controller/gstcontroller.h"/>
+  <c:include name="gst/controller/gstcontrolsource.h"/>
+  <c:include name="gst/controller/gstinterpolationcontrolsource.h"/>
+  <c:include name="gst/controller/gstlfocontrolsource.h"/>
+  <namespace name="GstController"
+             version="0.10"
+             shared-library="libgstreamer-0.10.so.0,libgstcontroller-0.10.so.0"
+             c:identifier-prefixes="Gst"
+             c:symbol-prefixes="gst">
+    <class name="ControlSource"
+           c:symbol-prefix="control_source"
+           c:type="GstControlSource"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="GstControlSource"
+           glib:get-type="gst_control_source_get_type"
+           glib:type-struct="ControlSourceClass">
+      <doc xml:whitespace="preserve">The #GstControlSource is a base class for control value sources that could
+be used by #GstController to get timestamp-value pairs.
+A #GstControlSource is used by first getting an instance, binding it to a
+#GParamSpec (for example by using gst_controller_set_control_source()) and
+then by having it used by the #GstController or calling
+gst_control_source_get_value() or gst_control_source_get_value_array().
+For implementing a new #GstControlSource one has to implement a
+#GstControlSourceBind method, which will depending on the #GParamSpec set up
+the control source for use and sets the #GstControlSourceGetValue and
+#GstControlSourceGetValueArray functions. These are then used by
+gst_control_source_get_value() or gst_control_source_get_value_array()
+to get values for specific timestamps.</doc>
+      <method name="bind" c:identifier="gst_control_source_bind">
+        <doc xml:whitespace="preserve">Binds a #GstControlSource to a specific property. This must be called only once for a
+#GstControlSource.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the #GstControlSource was bound correctly, %FALSE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#GParamSpec for the property for which this #GstControlSource should generate values.</doc>
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value" c:identifier="gst_control_source_get_value">
+        <doc xml:whitespace="preserve">Gets the value for this #GstControlSource at a given timestamp.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">FALSE if the value couldn't be returned, TRUE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="timestamp" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the time for which the value should be returned</doc>
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the value</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value_array"
+              c:identifier="gst_control_source_get_value_array">
+        <doc xml:whitespace="preserve">Gets an array of values for one element property.
+All fields of @value_array must be filled correctly. Especially the
+of values.
+The type of the values in the array is the same as the property's type.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the given array could be filled, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="timestamp" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the time that should be processed</doc>
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="value_array" transfer-ownership="none">
+            <doc xml:whitespace="preserve">array to put control-values in</doc>
+            <type name="ValueArray" c:type="GstValueArray*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="get_value">
+        <type name="ControlSourceGetValue" c:type="GstControlSourceGetValue"/>
+      </field>
+      <field name="get_value_array">
+        <type name="ControlSourceGetValueArray"
+              c:type="GstControlSourceGetValueArray"/>
+      </field>
+      <field name="bound" readable="0" private="1">
+        <type name="gboolean" c:type="gboolean"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </class>
+    <callback name="ControlSourceBind" c:type="GstControlSourceBind">
+      <doc xml:whitespace="preserve">Function for binding a #GstControlSource to a #GParamSpec.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the property could be bound to the #GstControlSource, %FALSE otherwise.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="self" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstControlSource instance</doc>
+          <type name="ControlSource" c:type="GstControlSource*"/>
+        </parameter>
+        <parameter name="pspec" transfer-ownership="none">
+          <doc xml:whitespace="preserve">#GParamSpec that should be bound to</doc>
+          <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="ControlSourceClass"
+            c:type="GstControlSourceClass"
+            glib:is-gtype-struct-for="ControlSource">
+      <doc xml:whitespace="preserve">The class structure of #GstControlSource.</doc>
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="bind">
+        <type name="ControlSourceBind" c:type="GstControlSourceBind"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <callback name="ControlSourceGetValue" c:type="GstControlSourceGetValue">
+      <doc xml:whitespace="preserve">Function for returning a value for a given timestamp.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the value was successfully calculated.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="self" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstControlSource instance</doc>
+          <type name="ControlSource" c:type="GstControlSource*"/>
+        </parameter>
+        <parameter name="timestamp" transfer-ownership="none">
+          <doc xml:whitespace="preserve">timestamp for which a value should be calculated</doc>
+          <type name="Gst.ClockTime" c:type="GstClockTime"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a #GValue which will be set to the result. It must be initialized to the correct type.</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ControlSourceGetValueArray"
+              c:type="GstControlSourceGetValueArray">
+      <doc xml:whitespace="preserve">Function for returning a #GstValueArray for a given timestamp.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the values were successfully calculated.</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="self" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstControlSource instance</doc>
+          <type name="ControlSource" c:type="GstControlSource*"/>
+        </parameter>
+        <parameter name="timestamp" transfer-ownership="none">
+          <doc xml:whitespace="preserve">timestamp for which a value should be calculated</doc>
+          <type name="Gst.ClockTime" c:type="GstClockTime"/>
+        </parameter>
+        <parameter name="value_array" transfer-ownership="none">
+          <doc xml:whitespace="preserve">array to put control-values in</doc>
+          <type name="ValueArray" c:type="GstValueArray*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="Controller"
+           c:symbol-prefix="controller"
+           c:type="GstController"
+           parent="GObject.Object"
+           glib:type-name="GstController"
+           glib:get-type="gst_controller_get_type"
+           glib:type-struct="ControllerClass">
+      <doc xml:whitespace="preserve">The controller subsystem offers a lightweight way to adjust gobject
+properties over stream-time. It works by using time-stamped value pairs that
+are queued for element-properties. At run-time the elements continously pull
+values changes for the current stream-time.
+What needs to be changed in a #GstElement?
+Very little - it is just two steps to make a plugin controllable!
+&lt;orderedlist&gt;
+&lt;listitem&gt;&lt;para&gt;
+mark gobject-properties paramspecs that make sense to be controlled,
+by GST_PARAM_CONTROLLABLE.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+when processing data (get, chain, loop function) at the beginning call
+gst_object_sync_values(element,timestamp).
+This will made the controller to update all gobject properties that are under
+control with the current values based on timestamp.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/orderedlist&gt;
+What needs to be done in applications?
+Again its not a lot to change.
+&lt;orderedlist&gt;
+&lt;listitem&gt;&lt;para&gt;
+first put some properties under control, by calling
+controller = gst_object_control_properties (object, "prop1", "prop2",...);
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Get a #GstControlSource for the property and set it up.
+csource = gst_interpolation_control_source_new ();
+gst_interpolation_control_source_set_interpolation_mode(csource, mode);
+gst_interpolation_control_source_set (csource,0 * GST_SECOND, value1);
+gst_interpolation_control_source_set (csource,1 * GST_SECOND, value2);
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Set the #GstControlSource in the controller.
+gst_controller_set_control_source (controller, "prop1", csource);
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+start your pipeline
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/orderedlist&gt;</doc>
+      <constructor name="new"
+                   c:identifier="gst_controller_new"
+                   introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new GstController for the given object's properties</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new controller.</doc>
+          <type name="Controller" c:type="GstController*"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the object of which some properties should be controlled</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_list" c:identifier="gst_controller_new_list">
+        <doc xml:whitespace="preserve">Creates a new GstController for the given object's properties</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new controller.</doc>
+          <type name="Controller" c:type="GstController*"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the object of which some properties should be controlled</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="list" transfer-ownership="none">
+            <doc xml:whitespace="preserve">list of property names that should be controlled</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_valist"
+                   c:identifier="gst_controller_new_valist"
+                   introspectable="0">
+        <doc xml:whitespace="preserve">Creates a new GstController for the given object's properties</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new controller.</doc>
+          <type name="Controller" c:type="GstController*"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the object of which some properties should be controlled</doc>
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="var_args" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%NULL terminated list of property names that should be controlled</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="init" c:identifier="gst_controller_init">
+        <doc xml:whitespace="preserve">Initializes the use of the controller library. Suggested to be called right
+after gst_init().</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the %TRUE for success.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="argc" transfer-ownership="none">
+            <doc xml:whitespace="preserve">pointer to the commandline argument count</doc>
+            <type name="gint" c:type="int*"/>
+          </parameter>
+          <parameter name="argv" transfer-ownership="none">
+            <doc xml:whitespace="preserve">pointer to the commandline argument values</doc>
+            <type name="utf8" c:type="char***"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get" c:identifier="gst_controller_get">
+        <doc xml:whitespace="preserve">Gets the value for the given controller-handled property at the requested
+time.
+property isn't handled by the controller</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the GValue of the property at the given time, or %NULL if the</doc>
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property to get</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="timestamp" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the time the control-change should be read from</doc>
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_all"
+              c:identifier="gst_controller_get_all"
+              deprecated="Use #GstControlSource, for example #GstInterpolationControlSource">
+        <doc xml:whitespace="preserve">Returns a read-only copy of the list of #GstTimedValue for the given property.
+Free the list after done with it.
+&lt;note&gt;&lt;para&gt;This doesn't modify the controlled GObject property!&lt;/para&gt;&lt;/note&gt;
+directly.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">a copy of the list, or %NULL if the property isn't handled by the controller</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property to get the list for</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_control_source"
+              c:identifier="gst_controller_get_control_source"
+              version="0.10.14"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Gets the corresponding #GstControlSource for the property. This should be unreferenced
+again after use.
+controlled by this controller or no #GstControlSource was assigned yet.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">the #GstControlSource for @property_name or NULL if the property is not</doc>
+          <type name="ControlSource" c:type="GstControlSource*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the property for which the #GstControlSource should be get</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value_array"
+              c:identifier="gst_controller_get_value_array">
+        <doc xml:whitespace="preserve">Function to be able to get an array of values for one element property.
+All fields of @value_array must be filled correctly. Especially the
+of values (as indicated by the nbsamples field).
+The type of the values in the array is the same as the property's type.
+&lt;note&gt;&lt;para&gt;This doesn't modify the controlled GObject property!&lt;/para&gt;&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the given array could be filled, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="timestamp" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the time that should be processed</doc>
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="value_array" transfer-ownership="none">
+            <doc xml:whitespace="preserve">array to put control-values in</doc>
+            <type name="ValueArray" c:type="GstValueArray*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value_arrays"
+              c:identifier="gst_controller_get_value_arrays">
+        <doc xml:whitespace="preserve">Function to be able to get an array of values for one or more given element
+properties.
+All fields of the %GstValueArray in the list must be filled correctly.
+Especially the GstValueArray-&gt;values arrays must be big enough to keep
+the requested amount of values.
+The types of the values in the array are the same as the property's type.
+&lt;note&gt;&lt;para&gt;This doesn't modify the controlled GObject properties!&lt;/para&gt;&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the given array(s) could be filled, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="timestamp" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the time that should be processed</doc>
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="value_arrays" transfer-ownership="none">
+            <doc xml:whitespace="preserve">list to return the control-values in</doc>
+            <type name="GLib.SList" c:type="GSList*">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_properties"
+              c:identifier="gst_controller_remove_properties"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Removes the given object properties from the controller</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%FALSE if one of the given property isn't handled by the controller, %TRUE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_properties_list"
+              c:identifier="gst_controller_remove_properties_list">
+        <doc xml:whitespace="preserve">Removes the given object properties from the controller</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%FALSE if one of the given property isn't handled by the controller, %TRUE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="none">
+            <doc xml:whitespace="preserve">#GList of property names that should be removed</doc>
+            <type name="GLib.List" c:type="GList*">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_properties_valist"
+              c:identifier="gst_controller_remove_properties_valist"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Removes the given object properties from the controller</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%FALSE if one of the given property isn't handled by the controller, %TRUE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="var_args" transfer-ownership="none">
+            <doc xml:whitespace="preserve">%NULL terminated list of property names that should be removed</doc>
+            <type name="va_list" c:type="va_list"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set"
+              c:identifier="gst_controller_set"
+              deprecated="Use #GstControlSource, for example #GstInterpolationControlSource">
+        <doc xml:whitespace="preserve">Set the value of given controller-handled property at a certain time.
+directly.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">FALSE if the values couldn't be set (ex : properties not handled by controller), TRUE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="timestamp" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the time the control-change is schedules for</doc>
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the control-value</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_control_source"
+              c:identifier="gst_controller_set_control_source"
+              version="0.10.14">
+        <doc xml:whitespace="preserve">Sets the #GstControlSource for @property_name. If there already was a #GstControlSource
+for this property it will be unreferenced.
+couldn't be bound to the property, %TRUE if everything worked as expected.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%FALSE if the given property isn't handled by the controller or the new #GstControlSource</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">name of the property for which the #GstControlSource should be set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="csource" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the #GstControlSource that should be used for the property</doc>
+            <type name="ControlSource" c:type="GstControlSource*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_disabled"
+              c:identifier="gst_controller_set_disabled"
+              version="0.10.14">
+        <doc xml:whitespace="preserve">This function is used to disable all properties of the #GstController
+for some time, i.e. gst_controller_sync_values() will do nothing.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="disabled" transfer-ownership="none">
+            <doc xml:whitespace="preserve">boolean that specifies whether to disable the controller or not.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_list"
+              c:identifier="gst_controller_set_from_list"
+              deprecated="Use #GstControlSource, for example #GstInterpolationControlSource">
+        <doc xml:whitespace="preserve">Sets multiple timed values at once.
+directly.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%FALSE if the values couldn't be set (ex : properties not handled by controller), %TRUE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property to set</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="timedvalues" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a list with #GstTimedValue items</doc>
+            <type name="GLib.SList" c:type="GSList*">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_interpolation_mode"
+              c:identifier="gst_controller_set_interpolation_mode"
+              deprecated="Use #GstControlSource, for example #GstInterpolationControlSource">
+        <doc xml:whitespace="preserve">Sets the given interpolation mode on the given property.
+&lt;note&gt;&lt;para&gt;User interpolation is not yet available and quadratic interpolation
+is deprecated and maps to cubic interpolation.&lt;/para&gt;&lt;/note&gt;
+directly.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the property is handled by the controller, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property for which to change the interpolation</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">interpolation mode</doc>
+            <type name="InterpolateMode" c:type="GstInterpolateMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_property_disabled"
+              c:identifier="gst_controller_set_property_disabled"
+              version="0.10.14">
+        <doc xml:whitespace="preserve">This function is used to disable the #GstController on a property for
+some time, i.e. gst_controller_sync_values() will do nothing for the
+property.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">property to disable</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="disabled" transfer-ownership="none">
+            <doc xml:whitespace="preserve">boolean that specifies whether to disable the controller or not.</doc>
+            <type name="gboolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="suggest_next_sync"
+              c:identifier="gst_controller_suggest_next_sync"
+              version="0.10.13">
+        <doc xml:whitespace="preserve">Returns a suggestion for timestamps where buffers should be split
+to get best controller results.
+if no control-rate was set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">Returns the suggested timestamp or %GST_CLOCK_TIME_NONE</doc>
+          <type name="Gst.ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="sync_values" c:identifier="gst_controller_sync_values">
+        <doc xml:whitespace="preserve">Sets the properties of the element, according to the controller that (maybe)
+handles them and for the given timestamp.
+If this function fails, it is most likely the application developers fault.
+Most probably the control sources are not setup correctly.
+properties, %FALSE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the controller values could be applied to the object</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="timestamp" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the time that should be processed</doc>
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unset"
+              c:identifier="gst_controller_unset"
+              deprecated="Use #GstControlSource, for example #GstInterpolationControlSource">
+        <doc xml:whitespace="preserve">Used to remove the value of given controller-handled property at a certain
+time.
+directly.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%FALSE if the values couldn't be unset (ex : properties not handled by controller), %TRUE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property to unset</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="timestamp" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the time the control-change should be removed from</doc>
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unset_all"
+              c:identifier="gst_controller_unset_all"
+              version="0.10.5"
+              deprecated="Use #GstControlSource, for example #GstInterpolationControlSource">
+        <doc xml:whitespace="preserve">Used to remove all time-stamped values of given controller-handled property
+directly.
+by controller), %TRUE otherwise</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%FALSE if the values couldn't be unset (ex : properties not handled</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the name of the property to unset</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="control-rate" writable="1" transfer-ownership="none">
+        <type name="guint64"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="properties">
+        <type name="GLib.List" c:type="GList*">
+          <type name="gpointer" c:type="gpointer"/>
+        </type>
+      </field>
+      <field name="lock">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject*"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="ControllerPrivate" c:type="GstControllerPrivate*"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </class>
+    <record name="ControllerClass"
+            c:type="GstControllerClass"
+            glib:is-gtype-struct-for="Controller">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <record name="ControllerPrivate"
+            c:type="GstControllerPrivate"
+            disguised="1">
+    </record>
+    <enumeration name="InterpolateMode" c:type="GstInterpolateMode">
+      <doc xml:whitespace="preserve">The various interpolation modes available.</doc>
+      <member name="none" value="0" c:identifier="GST_INTERPOLATE_NONE"/>
+      <member name="trigger" value="1" c:identifier="GST_INTERPOLATE_TRIGGER"/>
+      <member name="linear" value="2" c:identifier="GST_INTERPOLATE_LINEAR"/>
+      <member name="quadratic"
+              value="3"
+              c:identifier="GST_INTERPOLATE_QUADRATIC"/>
+      <member name="cubic" value="4" c:identifier="GST_INTERPOLATE_CUBIC"/>
+      <member name="user" value="5" c:identifier="GST_INTERPOLATE_USER"/>
+    </enumeration>
+    <class name="InterpolationControlSource"
+           c:symbol-prefix="interpolation_control_source"
+           c:type="GstInterpolationControlSource"
+           parent="ControlSource"
+           glib:type-name="GstInterpolationControlSource"
+           glib:get-type="gst_interpolation_control_source_get_type"
+           glib:type-struct="InterpolationControlSourceClass">
+      <doc xml:whitespace="preserve">#GstInterpolationControlSource is a #GstControlSource, that interpolates values between user-given
+control points. It supports several interpolation modes and property types.
+To use #GstInterpolationControlSource get a new instance by calling
+gst_interpolation_control_source_new(), bind it to a #GParamSpec, select a interpolation mode with
+gst_interpolation_control_source_set_interpolation_mode() and set some control points by calling
+gst_interpolation_control_source_set().
+All functions are MT-safe.</doc>
+      <constructor name="new"
+                   c:identifier="gst_interpolation_control_source_new">
+        <doc xml:whitespace="preserve">This returns a new, unbound #GstInterpolationControlSource.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new, unbound #GstInterpolationControlSource.</doc>
+          <type name="InterpolationControlSource"
+                c:type="GstInterpolationControlSource*"/>
+        </return-value>
+      </constructor>
+      <method name="get_all"
+              c:identifier="gst_interpolation_control_source_get_all"
+              introspectable="0">
+        <doc xml:whitespace="preserve">Returns a read-only copy of the list of #GstTimedValue for the given property.
+Free the list after done with it.</doc>
+        <return-value>
+          <doc xml:whitespace="preserve">a copy of the list, or %NULL if the property isn't handled by the controller</doc>
+          <type name="GLib.List" c:type="GList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_count"
+              c:identifier="gst_interpolation_control_source_get_count">
+        <doc xml:whitespace="preserve">Returns the number of control points that are set.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">the number of control points that are set.</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set" c:identifier="gst_interpolation_control_source_set">
+        <doc xml:whitespace="preserve">Set the value of given controller-handled property at a certain time.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">FALSE if the values couldn't be set, TRUE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="timestamp" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the time the control-change is scheduled for</doc>
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the control-value</doc>
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_list"
+              c:identifier="gst_interpolation_control_source_set_from_list">
+        <doc xml:whitespace="preserve">Sets multiple timed values at once.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">FALSE if the values couldn't be set, TRUE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="timedvalues" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a list with #GstTimedValue items</doc>
+            <type name="GLib.SList" c:type="GSList*">
+              <type name="gpointer" c:type="gpointer"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_interpolation_mode"
+              c:identifier="gst_interpolation_control_source_set_interpolation_mode">
+        <doc xml:whitespace="preserve">Sets the given interpolation mode.
+&lt;note&gt;&lt;para&gt;User interpolation is not yet available and quadratic interpolation
+is deprecated and maps to cubic interpolation.&lt;/para&gt;&lt;/note&gt;</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">%TRUE if the interpolation mode could be set, %FALSE otherwise</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <doc xml:whitespace="preserve">interpolation mode</doc>
+            <type name="InterpolateMode" c:type="GstInterpolateMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unset"
+              c:identifier="gst_interpolation_control_source_unset">
+        <doc xml:whitespace="preserve">Used to remove the value of given controller-handled property at a certain
+time.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">FALSE if the value couldn't be unset (i.e. not found, TRUE otherwise.</doc>
+          <type name="gboolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="timestamp" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the time the control-change should be removed from</doc>
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unset_all"
+              c:identifier="gst_interpolation_control_source_unset_all">
+        <doc xml:whitespace="preserve">Used to remove all time-stamped values of given controller-handled property</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <field name="parent">
+        <type name="ControlSource" c:type="GstControlSource"/>
+      </field>
+      <field name="lock" readable="0" private="1">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="InterpolationControlSourcePrivate"
+              c:type="GstInterpolationControlSourcePrivate*"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </class>
+    <record name="InterpolationControlSourceClass"
+            c:type="GstInterpolationControlSourceClass"
+            glib:is-gtype-struct-for="InterpolationControlSource">
+      <field name="parent_class">
+        <type name="ControlSourceClass" c:type="GstControlSourceClass"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <record name="InterpolationControlSourcePrivate"
+            c:type="GstInterpolationControlSourcePrivate"
+            disguised="1">
+    </record>
+    <class name="LFOControlSource"
+           c:symbol-prefix="lfo_control_source"
+           c:type="GstLFOControlSource"
+           parent="ControlSource"
+           glib:type-name="GstLFOControlSource"
+           glib:get-type="gst_lfo_control_source_get_type"
+           glib:type-struct="LFOControlSourceClass">
+      <doc xml:whitespace="preserve">#GstLFOControlSource is a #GstControlSource, that provides several periodic waveforms
+as control values. It supports all fundamental, numeric GValue types as property.
+To use #GstLFOControlSource get a new instance by calling gst_lfo_control_source_new(),
+bind it to a #GParamSpec and set the relevant properties or use
+gst_lfo_control_source_set_waveform.
+All functions are MT-safe.</doc>
+      <constructor name="new" c:identifier="gst_lfo_control_source_new">
+        <doc xml:whitespace="preserve">This returns a new, unbound #GstLFOControlSource.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new, unbound #GstLFOControlSource.</doc>
+          <type name="LFOControlSource" c:type="GstLFOControlSource*"/>
+        </return-value>
+      </constructor>
+      <property name="amplitude" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Specifies the amplitude for the waveform of this #GstLFOControlSource.
+It should be given as a #GValue with a type that can be transformed
+to the type of the bound property.</doc>
+        <type name="GObject.Value"/>
+      </property>
+      <property name="frequency" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Specifies the frequency that should be used for the waveform
+of this #GstLFOControlSource. It should be large enough
+so that the period is longer than one nanosecond.</doc>
+        <type name="gdouble"/>
+      </property>
+      <property name="offset" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Specifies the offset for the waveform of this #GstLFOControlSource.
+It should be given as a #GValue with a type that can be transformed
+to the type of the bound property.</doc>
+        <type name="GObject.Value"/>
+      </property>
+      <property name="timeshift" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Specifies the timeshift to the right that should be used for the waveform
+of this #GstLFOControlSource in nanoseconds.
+To get a n nanosecond shift to the left use
+"(GST_SECOND / frequency) - n".</doc>
+        <type name="guint64"/>
+      </property>
+      <property name="waveform" writable="1" transfer-ownership="none">
+        <doc xml:whitespace="preserve">Specifies the waveform that should be used for this #GstLFOControlSource.</doc>
+        <type name="LFOWaveform"/>
+      </property>
+      <field name="parent">
+        <type name="ControlSource" c:type="GstControlSource"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="LFOControlSourcePrivate"
+              c:type="GstLFOControlSourcePrivate*"/>
+      </field>
+      <field name="lock" readable="0" private="1">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </class>
+    <record name="LFOControlSourceClass"
+            c:type="GstLFOControlSourceClass"
+            glib:is-gtype-struct-for="LFOControlSource">
+      <field name="parent_class">
+        <type name="ControlSourceClass" c:type="GstControlSourceClass"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <record name="LFOControlSourcePrivate"
+            c:type="GstLFOControlSourcePrivate"
+            disguised="1">
+    </record>
+    <enumeration name="LFOWaveform"
+                 glib:type-name="GstLFOWaveform"
+                 glib:get-type="gst_lfo_waveform_get_type"
+                 c:type="GstLFOWaveform">
+      <doc xml:whitespace="preserve">The various waveform modes available.</doc>
+      <member name="sine"
+              value="0"
+              c:identifier="GST_LFO_WAVEFORM_SINE"
+              glib:nick="sine"/>
+      <member name="square"
+              value="1"
+              c:identifier="GST_LFO_WAVEFORM_SQUARE"
+              glib:nick="square"/>
+      <member name="saw"
+              value="2"
+              c:identifier="GST_LFO_WAVEFORM_SAW"
+              glib:nick="saw"/>
+      <member name="reverse_saw"
+              value="3"
+              c:identifier="GST_LFO_WAVEFORM_REVERSE_SAW"
+              glib:nick="reverse-saw"/>
+      <member name="triangle"
+              value="4"
+              c:identifier="GST_LFO_WAVEFORM_TRIANGLE"
+              glib:nick="triangle"/>
+    </enumeration>
+    <record name="TimedValue" c:type="GstTimedValue">
+      <doc xml:whitespace="preserve">Structure for saving a timestamp and a value.</doc>
+      <field name="timestamp" writable="1">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="value" writable="1">
+        <type name="GObject.Value" c:type="GValue"/>
+      </field>
+    </record>
+    <record name="ValueArray" c:type="GstValueArray">
+      <doc xml:whitespace="preserve">Structure to receive multiple values at once.</doc>
+      <field name="property_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="nbsamples" writable="1">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="sample_interval" writable="1">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="values" writable="1">
+        <type name="gpointer" c:type="gpointer*"/>
+      </field>
+    </record>
+    <function name="object_control_properties"
+              c:identifier="gst_object_control_properties"
+              version="0.9"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Convenience function for GObject
+Creates a GstController that allows you to dynamically control one, or more, GObject properties.
+If the given GObject already has a GstController, it adds the given properties to the existing
+controller and returns that controller.
+one or more of the given properties aren't available, or cannot be controlled, for the given element.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">The GstController with which the user can control the given properties dynamically or NULL if</doc>
+        <type name="Controller" c:type="GstController*"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the object of which some properties should be controlled</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_get_control_rate"
+              c:identifier="gst_object_get_control_rate"
+              version="0.10.10">
+      <doc xml:whitespace="preserve">Obtain the control-rate for this @object. Audio processing #GstElement
+objects will use this rate to sub-divide their processing loop and call
+gst_object_sync_values() inbetween. The length of the processing segment
+should be up to @control-rate nanoseconds.
+If the @object is not under property control, this will return
+%GST_CLOCK_TIME_NONE. This allows the element to avoid the sub-dividing.
+The control-rate is not expected to change if the element is in
+%GST_STATE_PAUSED or %GST_STATE_PLAYING.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">the control rate in nanoseconds</doc>
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the object that has controlled properties</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_get_control_source"
+              c:identifier="gst_object_get_control_source"
+              version="0.10.14"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Gets the corresponding #GstControlSource for the property. This should be unreferenced
+again after use.
+controlled by this controller or no #GstControlSource was assigned yet.</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the #GstControlSource for @property_name or NULL if the property is not</doc>
+        <type name="ControlSource" c:type="GstControlSource*"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the object</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="property_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">name of the property for which the #GstControlSource should be get</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_get_controller"
+              c:identifier="gst_object_get_controller"
+              version="0.9"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Gets the controller for the given GObject</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">the controller handling some of the given element's properties, %NULL if no controller</doc>
+        <type name="Controller" c:type="GstController*"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the object that has controlled properties</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_get_value_array"
+              c:identifier="gst_object_get_value_array"
+              version="0.9">
+      <doc xml:whitespace="preserve">Function to be able to get an array of values for one element properties
+If the GstValueArray-&gt;values array is NULL, it will be created by the function.
+The type of the values in the array are the same as the property's type.
+The g_object_* functions are just convenience functions for GObject</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the given array(s) could be filled, %FALSE otherwise</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the object that has controlled properties</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="timestamp" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the time that should be processed</doc>
+          <type name="Gst.ClockTime" c:type="GstClockTime"/>
+        </parameter>
+        <parameter name="value_array" transfer-ownership="none">
+          <doc xml:whitespace="preserve">array to put control-values in</doc>
+          <type name="ValueArray" c:type="GstValueArray*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_get_value_arrays"
+              c:identifier="gst_object_get_value_arrays"
+              version="0.9">
+      <doc xml:whitespace="preserve">Function to be able to get an array of values for one or more given element
+properties.
+If the GstValueArray-&gt;values array in list nodes is NULL, it will be created
+by the function.
+The type of the values in the array are the same as the property's type.
+The g_object_* functions are just convenience functions for GObject</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%TRUE if the given array(s) could be filled, %FALSE otherwise</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the object that has controlled properties</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="timestamp" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the time that should be processed</doc>
+          <type name="Gst.ClockTime" c:type="GstClockTime"/>
+        </parameter>
+        <parameter name="value_arrays" transfer-ownership="none">
+          <doc xml:whitespace="preserve">list to return the control-values in</doc>
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="gpointer" c:type="gpointer"/>
+          </type>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_set_control_rate"
+              c:identifier="gst_object_set_control_rate"
+              version="0.10.10">
+      <doc xml:whitespace="preserve">Change the control-rate for this @object. Audio processing #GstElement
+objects will use this rate to sub-divide their processing loop and call
+gst_object_sync_values() inbetween. The length of the processing segment
+should be up to @control-rate nanoseconds.
+The control-rate should not change if the element is in %GST_STATE_PAUSED or
+%GST_STATE_PLAYING.</doc>
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the object that has controlled properties</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="control_rate" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the new control-rate in nanoseconds.</doc>
+          <type name="Gst.ClockTime" c:type="GstClockTime"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_set_control_source"
+              c:identifier="gst_object_set_control_source"
+              version="0.10.14">
+      <doc xml:whitespace="preserve">Sets the #GstControlSource for @property_name. If there already was a #GstControlSource
+for this property it will be unreferenced.
+couldn't be bound to the property, %TRUE if everything worked as expected.</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%FALSE if the given property isn't handled by the controller or the new #GstControlSource</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the controller object</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="property_name" transfer-ownership="none">
+          <doc xml:whitespace="preserve">name of the property for which the #GstControlSource should be set</doc>
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="csource" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the #GstControlSource that should be used for the property</doc>
+          <type name="ControlSource" c:type="GstControlSource*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_set_controller"
+              c:identifier="gst_object_set_controller"
+              version="0.9">
+      <doc xml:whitespace="preserve">Sets the controller on the given GObject</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%FALSE if the GObject already has an controller, %TRUE otherwise</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the object that should get the controller</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="controller" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the controller object to plug in</doc>
+          <type name="Controller" c:type="GstController*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_suggest_next_sync"
+              c:identifier="gst_object_suggest_next_sync"
+              version="0.10.13">
+      <doc xml:whitespace="preserve">Convenience function for GObject</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">same thing as gst_controller_suggest_next_sync()</doc>
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the object that has controlled properties</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_sync_values"
+              c:identifier="gst_object_sync_values"
+              version="0.9">
+      <doc xml:whitespace="preserve">Convenience function for GObject</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">same thing as gst_controller_sync_values()</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the object that has controlled properties</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="timestamp" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the time that should be processed</doc>
+          <type name="Gst.ClockTime" c:type="GstClockTime"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="object_uncontrol_properties"
+              c:identifier="gst_object_uncontrol_properties"
+              version="0.9"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Convenience function for GObject
+Removes the given element's properties from it's controller
+controller, %TRUE otherwise</doc>
+      <return-value transfer-ownership="none">
+        <doc xml:whitespace="preserve">%FALSE if one of the given property names isn't handled by the</doc>
+        <type name="gboolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <doc xml:whitespace="preserve">the object of which some properties should not be controlled anymore</doc>
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/gstreamer/net/GstNet-0.10.gir b/extra/gstreamer/net/GstNet-0.10.gir
new file mode 100644 (file)
index 0000000..8e1f406
--- /dev/null
@@ -0,0 +1,318 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations.  -->
+<repository version="1.2"
+            xmlns="http://www.gtk.org/introspection/core/1.0"
+            xmlns:c="http://www.gtk.org/introspection/c/1.0"
+            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+  <include name="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="Gst" version="0.10"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="gstreamer-net-0.10"/>
+  <c:include name="gst/net/gstnet.h"/>
+  <namespace name="GstNet"
+             version="0.10"
+             shared-library="libgstreamer-0.10.so.0,libgstnet-0.10.so.0"
+             c:identifier-prefixes="Gst"
+             c:symbol-prefixes="gst">
+    <constant name="NET_TIME_PACKET_SIZE" value="16">
+      <type name="gint" c:type="gint"/>
+    </constant>
+    <class name="NetClientClock"
+           c:symbol-prefix="net_client_clock"
+           c:type="GstNetClientClock"
+           parent="Gst.SystemClock"
+           glib:type-name="GstNetClientClock"
+           glib:get-type="gst_net_client_clock_get_type"
+           glib:type-struct="NetClientClockClass">
+      <doc xml:whitespace="preserve">This object implements a custom #GstClock that synchronizes its time
+to a remote time provider such as #GstNetTimeProvider.
+A new clock is created with gst_net_client_clock_new() which takes the
+address and port of the remote time provider along with a name and
+an initial time.
+This clock will poll the time provider and will update its calibration
+parameters based on the local and remote observations.
+Various parameters of the clock can be configured with the parent #GstClock
+"timeout", "window-size" and "window-threshold" object properties.
+A #GstNetClientClock is typically set on a #GstPipeline with 
+gst_pipeline_use_clock().
+Last reviewed on 2005-11-23 (0.9.5)</doc>
+      <constructor name="new" c:identifier="gst_net_client_clock_new">
+        <doc xml:whitespace="preserve">Create a new #GstNetClientClock that will report the time
+provided by the #GstNetTimeProvider on @remote_address and 
+clock.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">a new #GstClock that receives a time from the remote</doc>
+          <type name="Gst.Clock" c:type="GstClock*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a name for the clock</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="remote_address" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the address of the remote clock provider</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="remote_port" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the port of the remote clock provider</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="base_time" transfer-ownership="none">
+            <doc xml:whitespace="preserve">initial time of the clock</doc>
+            <type name="Gst.ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <property name="address" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="port" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <field name="clock">
+        <type name="Gst.SystemClock" c:type="GstSystemClock"/>
+      </field>
+      <field name="address">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="port">
+        <type name="gint" c:type="gint"/>
+      </field>
+      <field name="sock" readable="0" private="1">
+        <type name="gint" c:type="int"/>
+      </field>
+      <field name="control_sock" readable="0" private="1">
+        <array zero-terminated="0" c:type="gint" fixed-size="2">
+          <type name="gint" c:type="int"/>
+        </array>
+      </field>
+      <field name="current_timeout" readable="0" private="1">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="servaddr">
+        <type name="gpointer" c:type="gpointer*"/>
+      </field>
+      <field name="thread">
+        <type name="GLib.Thread" c:type="GThread*"/>
+      </field>
+      <field name="priv" readable="0" private="1">
+        <type name="NetClientClockPrivate" c:type="GstNetClientClockPrivate*"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </class>
+    <record name="NetClientClockClass"
+            c:type="GstNetClientClockClass"
+            glib:is-gtype-struct-for="NetClientClock">
+      <field name="parent_class">
+        <type name="Gst.SystemClockClass" c:type="GstSystemClockClass"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </record>
+    <record name="NetClientClockPrivate"
+            c:type="GstNetClientClockPrivate"
+            disguised="1">
+    </record>
+    <record name="NetTimePacket" c:type="GstNetTimePacket">
+      <doc xml:whitespace="preserve">Various functions for receiving, sending an serializing #GstNetTimePacket
+structures.
+Last reviewed on 2005-11-23 (0.9.5)</doc>
+      <field name="local_time" writable="1">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="remote_time" writable="1">
+        <type name="Gst.ClockTime" c:type="GstClockTime"/>
+      </field>
+      <method name="send" c:identifier="gst_net_time_packet_send">
+        <doc xml:whitespace="preserve">Sends a #GstNetTimePacket over a socket. Essentially a thin wrapper around
+sendto(2) and gst_net_time_packet_serialize(). 
+MT safe.</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">The return value of sendto(2).</doc>
+          <type name="gint" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a file descriptor created by socket(2)</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+          <parameter name="addr" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a pointer to a sockaddr to hold the address of the sender</doc>
+            <type name="gpointer" c:type="gpointer*"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <doc xml:whitespace="preserve">the size of the data pointed to by @addr</doc>
+            <type name="gint32" c:type="socklen_t"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="serialize" c:identifier="gst_net_time_packet_serialize">
+        <doc xml:whitespace="preserve">Serialized a #GstNetTimePacket into a newly-allocated sequence of
+#GST_NET_TIME_PACKET_SIZE bytes, in network byte order. The value returned is
+suitable for passing to write(2) or sendto(2) for communication over the
+network.
+MT safe. Caller owns return value (g_free to free).</doc>
+        <return-value transfer-ownership="none">
+          <doc xml:whitespace="preserve">A newly allocated sequence of #GST_NET_TIME_PACKET_SIZE bytes.</doc>
+          <type name="guint8" c:type="guint8*"/>
+        </return-value>
+      </method>
+    </record>
+    <class name="NetTimeProvider"
+           c:symbol-prefix="net_time_provider"
+           c:type="GstNetTimeProvider"
+           parent="Gst.Object"
+           glib:type-name="GstNetTimeProvider"
+           glib:get-type="gst_net_time_provider_get_type"
+           glib:type-struct="NetTimeProviderClass">
+      <doc xml:whitespace="preserve">This object exposes the time of a #GstClock on the network.
+A #GstNetTimeProvider is created with gst_net_time_provider_new() which
+takes a #GstClock, an address and a port number as arguments.
+After creating the object, a client clock such as #GstNetClientClock can
+query the exposed clock over the network for its values.
+The #GstNetTimeProvider typically wraps the clock used by a #GstPipeline.
+Last reviewed on 2005-11-23 (0.9.5)</doc>
+      <constructor name="new" c:identifier="gst_net_time_provider_new">
+        <doc xml:whitespace="preserve">Allows network clients to get the current time of @clock.</doc>
+        <return-value transfer-ownership="full">
+          <doc xml:whitespace="preserve">the new #GstNetTimeProvider, or NULL on error</doc>
+          <type name="NetTimeProvider" c:type="GstNetTimeProvider*"/>
+        </return-value>
+        <parameters>
+          <parameter name="clock" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a #GstClock to export over the network</doc>
+            <type name="Gst.Clock" c:type="GstClock*"/>
+          </parameter>
+          <parameter name="address" transfer-ownership="none">
+            <doc xml:whitespace="preserve">an address to bind on as a dotted quad (xxx.xxx.xxx.xxx), or NULL to bind to all addresses</doc>
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="port" transfer-ownership="none">
+            <doc xml:whitespace="preserve">a port to bind on, or 0 to let the kernel choose</doc>
+            <type name="gint" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <property name="active" writable="1" transfer-ownership="none">
+        <type name="gboolean"/>
+      </property>
+      <property name="address" writable="1" transfer-ownership="none">
+        <type name="utf8"/>
+      </property>
+      <property name="clock" writable="1" transfer-ownership="none">
+        <type name="Gst.Clock"/>
+      </property>
+      <property name="port" writable="1" transfer-ownership="none">
+        <type name="gint"/>
+      </property>
+      <field name="parent">
+        <type name="Gst.Object" c:type="GstObject"/>
+      </field>
+      <field name="address" readable="0" private="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="port" readable="0" private="1">
+        <type name="gint" c:type="int"/>
+      </field>
+      <field name="sock" readable="0" private="1">
+        <type name="gint" c:type="int"/>
+      </field>
+      <field name="control_sock" readable="0" private="1">
+        <array zero-terminated="0" c:type="gint" fixed-size="2">
+          <type name="gint" c:type="int"/>
+        </array>
+      </field>
+      <field name="thread" readable="0" private="1">
+        <type name="GLib.Thread" c:type="GThread*"/>
+      </field>
+      <field name="clock" readable="0" private="1">
+        <type name="Gst.Clock" c:type="GstClock*"/>
+      </field>
+      <union name="active" c:type="active">
+        <field name="_gst_reserved1" writable="1">
+          <type name="gpointer" c:type="gpointer"/>
+        </field>
+        <field name="active" writable="1">
+          <type name="gint" c:type="gint"/>
+        </field>
+      </union>
+      <field name="priv" readable="0" private="1">
+        <type name="NetTimeProviderPrivate"
+              c:type="GstNetTimeProviderPrivate*"/>
+      </field>
+      <field name="_gst_reserved" readable="0" private="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+          <type name="gpointer" c:type="gpointer"/>
+        </array>
+      </field>
+    </class>
+    <record name="NetTimeProviderClass"
+            c:type="GstNetTimeProviderClass"
+            glib:is-gtype-struct-for="NetTimeProvider">
+      <field name="parent_class">
+        <type name="Gst.ObjectClass" c:type="GstObjectClass"/>
+      </field>
+    </record>
+    <record name="NetTimeProviderPrivate"
+            c:type="GstNetTimeProviderPrivate"
+            disguised="1">
+    </record>
+    <function name="net_time_packet_new"
+              c:identifier="gst_net_time_packet_new"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Creates a new #GstNetTimePacket from a buffer received over the network. The
+caller is responsible for ensuring that @buffer is at least
+#GST_NET_TIME_PACKET_SIZE bytes long.
+If @buffer is #NULL, the local and remote times will be set to
+#GST_CLOCK_TIME_NONE.
+MT safe. Caller owns return value (g_free to free).</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">The new #GstNetTimePacket.</doc>
+        <type name="NetTimePacket" c:type="GstNetTimePacket*"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a buffer from which to construct the packet, or NULL</doc>
+          <type name="guint8" c:type="guint8*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="net_time_packet_receive"
+              c:identifier="gst_net_time_packet_receive"
+              introspectable="0">
+      <doc xml:whitespace="preserve">Receives a #GstNetTimePacket over a socket. Handles interrupted system calls,
+but otherwise returns NULL on error. See recvfrom(2) for more information on
+how to interpret @sockaddr.
+MT safe. Caller owns return value (g_free to free).</doc>
+      <return-value>
+        <doc xml:whitespace="preserve">The new #GstNetTimePacket.</doc>
+        <type name="NetTimePacket" c:type="GstNetTimePacket*"/>
+      </return-value>
+      <parameters>
+        <parameter name="fd" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a file descriptor created by socket(2)</doc>
+          <type name="gint" c:type="gint"/>
+        </parameter>
+        <parameter name="addr" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to a sockaddr to hold the address of the sender</doc>
+          <type name="gpointer" c:type="gpointer*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <doc xml:whitespace="preserve">a pointer to the size of the data pointed to by @addr</doc>
+          <type name="gint32" c:type="socklen_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+  </namespace>
+</repository>