<?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="Gdk" version="3.0"/>
  <include name="Gio" version="2.0"/>
  <include name="Gtk" version="3.0"/>
  <c:include name="egg-private.h"/>
  <namespace name="Egg"
             version="1.0"
             shared-library="libegg-private.so.0"
             c:identifier-prefixes="Egg"
             c:symbol-prefixes="egg">
    <alias name="Animation_autoptr" c:type="EggAnimation_autoptr">
      <type name="gpointer" c:type="gpointer"/>
    </alias>
    <alias name="BindingGroup_autoptr" c:type="EggBindingGroup_autoptr">
      <type name="gpointer" c:type="gpointer"/>
    </alias>
    <alias name="SearchBar_autoptr" c:type="EggSearchBar_autoptr">
      <type name="gpointer" c:type="gpointer"/>
    </alias>
    <alias name="SettingsFlagAction_autoptr"
           c:type="EggSettingsFlagAction_autoptr">
      <type name="gpointer" c:type="gpointer"/>
    </alias>
    <alias name="SettingsSandwich_autoptr"
           c:type="EggSettingsSandwich_autoptr">
      <type name="gpointer" c:type="gpointer"/>
    </alias>
    <alias name="SignalGroup_autoptr" c:type="EggSignalGroup_autoptr">
      <type name="gpointer" c:type="gpointer"/>
    </alias>
    <alias name="StateMachine_autoptr" c:type="EggStateMachine_autoptr">
      <type name="gpointer" c:type="gpointer"/>
    </alias>
    <alias name="TaskCache_autoptr" c:type="EggTaskCache_autoptr">
      <type name="gpointer" c:type="gpointer"/>
    </alias>
    <class name="Animation"
           c:symbol-prefix="animation"
           c:type="EggAnimation"
           parent="GObject.InitiallyUnowned"
           glib:type-name="EggAnimation"
           glib:get-type="egg_animation_get_type"
           glib:type-struct="AnimationClass">
      <method name="add_property" c:identifier="egg_animation_add_property">
        <doc xml:space="preserve">Adds a new property to the set of properties to be animated during the
lifetime of the animation.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">None.
Side effects: None.</doc>
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="animation" transfer-ownership="none">
            <doc xml:space="preserve">A #EggAnimation.</doc>
            <type name="Animation" c:type="EggAnimation*"/>
          </instance-parameter>
          <parameter name="pspec" transfer-ownership="none">
            <doc xml:space="preserve">A #ParamSpec of @target or a #GtkWidget&lt;!-- --&gt;'s parent.</doc>
            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">The new value for the property at the end of the animation.</doc>
            <type name="GObject.Value" c:type="const GValue*"/>
          </parameter>
        </parameters>
      </method>
      <method name="start" c:identifier="egg_animation_start">
        <doc xml:space="preserve">Start the animation. When the animation stops, the internal reference will
be dropped and the animation may be finalized.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">None.
Side effects: None.</doc>
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="animation" transfer-ownership="none">
            <doc xml:space="preserve">A #EggAnimation.</doc>
            <type name="Animation" c:type="EggAnimation*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="stop" c:identifier="egg_animation_stop">
        <doc xml:space="preserve">Stops a running animation. The internal reference to the animation is
dropped and therefore may cause the object to finalize.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">None.
Side effects: None.</doc>
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="animation" transfer-ownership="none">
            <doc xml:space="preserve">A #EggAnimation.</doc>
            <type name="Animation" c:type="EggAnimation*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="duration"
                readable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The "duration" property is the total number of milliseconds that the
animation should run before being completed.</doc>
        <type name="guint" c:type="guint"/>
      </property>
      <property name="frame-clock"
                readable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="Gdk.FrameClock"/>
      </property>
      <property name="mode"
                readable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The "mode" property is the Alpha function that should be used to
determine the offset within the animation based on the current
offset in the animations duration.</doc>
        <type name="AnimationMode"/>
      </property>
      <property name="target"
                readable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The "target" property is the #GObject that should have it's properties
animated.</doc>
        <type name="GObject.Object"/>
      </property>
      <glib:signal name="tick" when="first">
        <doc xml:space="preserve">The "tick" signal is emitted on each frame in the animation.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="AnimationClass"
            c:type="EggAnimationClass"
            glib:is-gtype-struct-for="Animation">
      <field name="parent_class">
        <type name="GObject.InitiallyUnownedClass"
              c:type="GInitiallyUnownedClass"/>
      </field>
    </record>
    <enumeration name="AnimationMode"
                 glib:type-name="EggAnimationMode"
                 glib:get-type="egg_animation_mode_get_type"
                 c:type="EggAnimationMode">
      <member name="LINEAR"
              value="0"
              c:identifier="EGG_ANIMATION_LINEAR"
              glib:nick="LINEAR">
      </member>
      <member name="EASE_IN_QUAD"
              value="1"
              c:identifier="EGG_ANIMATION_EASE_IN_QUAD"
              glib:nick="EASE_IN_QUAD">
      </member>
      <member name="EASE_IN_OUT_QUAD"
              value="3"
              c:identifier="EGG_ANIMATION_EASE_IN_OUT_QUAD"
              glib:nick="EASE_IN_OUT_QUAD">
      </member>
      <member name="EASE_OUT_QUAD"
              value="2"
              c:identifier="EGG_ANIMATION_EASE_OUT_QUAD"
              glib:nick="EASE_OUT_QUAD">
      </member>
      <member name="EASE_IN_CUBIC"
              value="4"
              c:identifier="EGG_ANIMATION_EASE_IN_CUBIC"
              glib:nick="EASE_IN_CUBIC">
      </member>
      <member name="EASE_OUT_CUBIC"
              value="5"
              c:identifier="EGG_ANIMATION_EASE_OUT_CUBIC"
              glib:nick="EASE_OUT_CUBIC">
      </member>
    </enumeration>
    <class name="BindingGroup"
           c:symbol-prefix="binding_group"
           c:type="EggBindingGroup"
           parent="GObject.Object"
           glib:type-name="EggBindingGroup"
           glib:get-type="egg_binding_group_get_type"
           glib:type-struct="BindingGroupClass">
      <constructor name="new" c:identifier="egg_binding_group_new">
        <doc xml:space="preserve">Creates a new #EggBindingGroup.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #EggBindingGroup</doc>
          <type name="BindingGroup" c:type="EggBindingGroup*"/>
        </return-value>
      </constructor>
      <method name="bind" c:identifier="egg_binding_group_bind">
        <doc xml:space="preserve">Creates a binding between @source_property on the source object
and @target_property on @target. Whenever the @source_property
is changed the @target_property is updated using the same value.
The binding flags #G_BINDING_SYNC_CREATE is automatically specified.

See: g_object_bind_property().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">the #EggBindingGroup</doc>
            <type name="BindingGroup" c:type="EggBindingGroup*"/>
          </instance-parameter>
          <parameter name="source_property" transfer-ownership="none">
            <doc xml:space="preserve">the property on the source to bind</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="target" transfer-ownership="none">
            <doc xml:space="preserve">the target #GObject</doc>
            <type name="GObject.Object" c:type="gpointer"/>
          </parameter>
          <parameter name="target_property" transfer-ownership="none">
            <doc xml:space="preserve">the property on @target to bind</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">the flags used to create the #GBinding</doc>
            <type name="GObject.BindingFlags" c:type="GBindingFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="bind_full"
              c:identifier="egg_binding_group_bind_full"
              shadowed-by="bind_with_closures">
        <doc xml:space="preserve">Creates a binding between @source_property on the source object and
@target_property on @target, allowing you to set the transformation
functions to be used by the binding. The binding flags
#G_BINDING_SYNC_CREATE is automatically specified.

See: g_object_bind_property_full().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">the #EggBindingGroup</doc>
            <type name="BindingGroup" c:type="EggBindingGroup*"/>
          </instance-parameter>
          <parameter name="source_property" transfer-ownership="none">
            <doc xml:space="preserve">the property on the source to bind</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="target" transfer-ownership="none">
            <doc xml:space="preserve">the target #GObject</doc>
            <type name="GObject.Object" c:type="gpointer"/>
          </parameter>
          <parameter name="target_property" transfer-ownership="none">
            <doc xml:space="preserve">the property on @target to bind</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">the flags used to create the #GBinding</doc>
            <type name="GObject.BindingFlags" c:type="GBindingFlags"/>
          </parameter>
          <parameter name="transform_to"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="notified">
            <doc xml:space="preserve">the transformation function
    from the source object to the @target, or %NULL to use the default</doc>
            <type name="GObject.BindingTransformFunc"
                  c:type="GBindingTransformFunc"/>
          </parameter>
          <parameter name="transform_from"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="notified"
                     closure="6"
                     destroy="7">
            <doc xml:space="preserve">the transformation function
    from the @target to the source object, or %NULL to use the default</doc>
            <type name="GObject.BindingTransformFunc"
                  c:type="GBindingTransformFunc"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">custom data to be passed to the transformation
            functions, or %NULL</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="user_data_destroy"
                     transfer-ownership="none"
                     scope="async">
            <doc xml:space="preserve">function to be called when disposing the binding,
    to free the resources used by the transformation functions</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </method>
      <method name="bind_with_closures"
              c:identifier="egg_binding_group_bind_with_closures"
              shadows="bind_full">
        <doc xml:space="preserve">Creates a binding between @source_property on the source object and
@target_property on @target, allowing you to set the transformation
functions to be used by the binding. The binding flags
#G_BINDING_SYNC_CREATE is automatically specified.

This function is the language bindings friendly version of
egg_binding_group_bind_property_full(), using #GClosures
instead of function pointers.

See: g_object_bind_property_with_closures().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">the #EggBindingGroup</doc>
            <type name="BindingGroup" c:type="EggBindingGroup*"/>
          </instance-parameter>
          <parameter name="source_property" transfer-ownership="none">
            <doc xml:space="preserve">the property on the source to bind</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="target" transfer-ownership="none">
            <doc xml:space="preserve">the target #GObject</doc>
            <type name="GObject.Object" c:type="gpointer"/>
          </parameter>
          <parameter name="target_property" transfer-ownership="none">
            <doc xml:space="preserve">the property on @target to bind</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">the flags used to create the #GBinding</doc>
            <type name="GObject.BindingFlags" c:type="GBindingFlags"/>
          </parameter>
          <parameter name="transform_to"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GClosure wrapping the
    transformation function from the source object to the @target,
    or %NULL to use the default</doc>
            <type name="GObject.Closure" c:type="GClosure*"/>
          </parameter>
          <parameter name="transform_from"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GClosure wrapping the
    transformation function from the @target to the source object,
    or %NULL to use the default</doc>
            <type name="GObject.Closure" c:type="GClosure*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_source" c:identifier="egg_binding_group_get_source">
        <doc xml:space="preserve">Gets the source object used for binding properties.</doc>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve">the source object.</doc>
          <type name="GObject.Object" c:type="GObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">the #EggBindingGroup</doc>
            <type name="BindingGroup" c:type="EggBindingGroup*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_source" c:identifier="egg_binding_group_set_source">
        <doc xml:space="preserve">Sets @source as the source object used for creating property
bindings. If there is already a source object all bindings from it
will be removed.

Note: All properties that have been bound must exist on @source.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">the #EggBindingGroup</doc>
            <type name="BindingGroup" c:type="EggBindingGroup*"/>
          </instance-parameter>
          <parameter name="source"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">the source #GObject</doc>
            <type name="GObject.Object" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <property name="source" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">The source object used for binding properties.</doc>
        <type name="GObject.Object"/>
      </property>
    </class>
    <record name="BindingGroupClass"
            c:type="EggBindingGroupClass"
            glib:is-gtype-struct-for="BindingGroup">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="SearchBar"
           c:symbol-prefix="search_bar"
           c:type="EggSearchBar"
           parent="Gtk.Bin"
           glib:type-name="EggSearchBar"
           glib:get-type="egg_search_bar_get_type"
           glib:type-struct="SearchBarClass">
      <implements name="Atk.ImplementorIface"/>
      <implements name="Gtk.Buildable"/>
      <constructor name="new" c:identifier="egg_search_bar_new">
        <return-value transfer-ownership="none">
          <type name="Gtk.Widget" c:type="GtkWidget*"/>
        </return-value>
      </constructor>
      <method name="get_entry" c:identifier="egg_search_bar_get_entry">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">A #GtkSearchEntry.</doc>
          <type name="Gtk.SearchEntry" c:type="GtkWidget*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SearchBar" c:type="EggSearchBar*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_search_mode_enabled"
              c:identifier="egg_search_bar_get_search_mode_enabled">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SearchBar" c:type="EggSearchBar*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_show_close_button"
              c:identifier="egg_search_bar_get_show_close_button">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SearchBar" c:type="EggSearchBar*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_search_mode_enabled"
              c:identifier="egg_search_bar_set_search_mode_enabled">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SearchBar" c:type="EggSearchBar*"/>
          </instance-parameter>
          <parameter name="search_mode_enabled" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_show_close_button"
              c:identifier="egg_search_bar_set_show_close_button">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SearchBar" c:type="EggSearchBar*"/>
          </instance-parameter>
          <parameter name="show_close_button" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <property name="search-mode-enabled"
                writable="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="show-close-button"
                writable="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <field name="parent_instance">
        <type name="Gtk.Bin" c:type="GtkBin"/>
      </field>
      <glib:signal name="activate" when="last" action="1">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="reveal" when="last" action="1">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="SearchBarClass"
            c:type="EggSearchBarClass"
            glib:is-gtype-struct-for="SearchBar">
      <field name="parent_class">
        <type name="Gtk.BinClass" c:type="GtkBinClass"/>
      </field>
    </record>
    <class name="SettingsFlagAction"
           c:symbol-prefix="settings_flag_action"
           c:type="EggSettingsFlagAction"
           parent="GObject.Object"
           glib:type-name="EggSettingsFlagAction"
           glib:get-type="egg_settings_flag_action_get_type"
           glib:type-struct="SettingsFlagActionClass">
      <implements name="Gio.Action"/>
      <function name="new" c:identifier="egg_settings_flag_action_new">
        <doc xml:space="preserve">This creates a new action that can be used to toggle an individual flag in
a #GSettings key which is of a flags type.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A new #GAction.</doc>
          <type name="Gio.Action" c:type="GAction*"/>
        </return-value>
        <parameters>
          <parameter name="schema_id" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="schema_key" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="flag_nick" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <property name="flag-nick"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="schema-id"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="schema-key" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
    </class>
    <record name="SettingsFlagActionClass"
            c:type="EggSettingsFlagActionClass"
            glib:is-gtype-struct-for="SettingsFlagAction">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="SettingsSandwich"
           c:symbol-prefix="settings_sandwich"
           c:type="EggSettingsSandwich"
           parent="GObject.Object"
           glib:type-name="EggSettingsSandwich"
           glib:get-type="egg_settings_sandwich_get_type"
           glib:type-struct="SettingsSandwichClass">
      <constructor name="new" c:identifier="egg_settings_sandwich_new">
        <return-value transfer-ownership="full">
          <type name="SettingsSandwich" c:type="EggSettingsSandwich*"/>
        </return-value>
        <parameters>
          <parameter name="schema_id" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="path" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="append" c:identifier="egg_settings_sandwich_append">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SettingsSandwich" c:type="EggSettingsSandwich*"/>
          </instance-parameter>
          <parameter name="settings" transfer-ownership="none">
            <type name="Gio.Settings" c:type="GSettings*"/>
          </parameter>
        </parameters>
      </method>
      <method name="bind" c:identifier="egg_settings_sandwich_bind">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SettingsSandwich" c:type="EggSettingsSandwich*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="object" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="property" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <type name="Gio.SettingsBindFlags" c:type="GSettingsBindFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="bind_with_mapping"
              c:identifier="egg_settings_sandwich_bind_with_mapping">
        <doc xml:space="preserve">Creates a new binding similar to g_settings_bind_with_mapping() but applying
from the resolved value via the settings sandwich.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">An #EggSettingsSandwich.</doc>
            <type name="SettingsSandwich" c:type="EggSettingsSandwich*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve">the settings key to bind.
@object (type GObject.Object): the target object.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="object" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="property" transfer-ownership="none">
            <doc xml:space="preserve">the property on @object to apply.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">flags for the binding.</doc>
            <type name="Gio.SettingsBindFlags" c:type="GSettingsBindFlags"/>
          </parameter>
          <parameter name="get_mapping"
                     transfer-ownership="none"
                     scope="notified"
                     closure="6"
                     destroy="7">
            <doc xml:space="preserve">the get mapping function</doc>
            <type name="Gio.SettingsBindGetMapping"
                  c:type="GSettingsBindGetMapping"/>
          </parameter>
          <parameter name="set_mapping"
                     transfer-ownership="none"
                     scope="notified"
                     closure="6"
                     destroy="7">
            <doc xml:space="preserve">the set mapping function</doc>
            <type name="Gio.SettingsBindSetMapping"
                  c:type="GSettingsBindSetMapping"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">user data for @get_mapping and @set_mapping.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="destroy" transfer-ownership="none" scope="async">
            <doc xml:space="preserve">destroy notify for @user_data.</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_boolean"
              c:identifier="egg_settings_sandwich_get_boolean">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SettingsSandwich" c:type="EggSettingsSandwich*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_default_value"
              c:identifier="egg_settings_sandwich_get_default_value">
        <return-value transfer-ownership="full">
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SettingsSandwich" c:type="EggSettingsSandwich*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_double"
              c:identifier="egg_settings_sandwich_get_double">
        <return-value transfer-ownership="none">
          <type name="gdouble" c:type="gdouble"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SettingsSandwich" c:type="EggSettingsSandwich*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_int" c:identifier="egg_settings_sandwich_get_int">
        <return-value transfer-ownership="none">
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SettingsSandwich" c:type="EggSettingsSandwich*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_string"
              c:identifier="egg_settings_sandwich_get_string">
        <return-value transfer-ownership="full">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SettingsSandwich" c:type="EggSettingsSandwich*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_uint" c:identifier="egg_settings_sandwich_get_uint">
        <return-value transfer-ownership="none">
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SettingsSandwich" c:type="EggSettingsSandwich*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_user_value"
              c:identifier="egg_settings_sandwich_get_user_value">
        <return-value transfer-ownership="full">
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SettingsSandwich" c:type="EggSettingsSandwich*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_value" c:identifier="egg_settings_sandwich_get_value">
        <return-value transfer-ownership="full">
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SettingsSandwich" c:type="EggSettingsSandwich*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_boolean"
              c:identifier="egg_settings_sandwich_set_boolean">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SettingsSandwich" c:type="EggSettingsSandwich*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="val" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_double"
              c:identifier="egg_settings_sandwich_set_double">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SettingsSandwich" c:type="EggSettingsSandwich*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="val" transfer-ownership="none">
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_int" c:identifier="egg_settings_sandwich_set_int">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SettingsSandwich" c:type="EggSettingsSandwich*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="val" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_string"
              c:identifier="egg_settings_sandwich_set_string">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SettingsSandwich" c:type="EggSettingsSandwich*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="val" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_uint" c:identifier="egg_settings_sandwich_set_uint">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SettingsSandwich" c:type="EggSettingsSandwich*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="val" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_value" c:identifier="egg_settings_sandwich_set_value">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SettingsSandwich" c:type="EggSettingsSandwich*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
        </parameters>
      </method>
      <method name="unbind" c:identifier="egg_settings_sandwich_unbind">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SettingsSandwich" c:type="EggSettingsSandwich*"/>
          </instance-parameter>
          <parameter name="property" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <property name="path"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="schema-id"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
    </class>
    <record name="SettingsSandwichClass"
            c:type="EggSettingsSandwichClass"
            glib:is-gtype-struct-for="SettingsSandwich">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="SignalGroup"
           c:symbol-prefix="signal_group"
           c:type="EggSignalGroup"
           parent="GObject.Object"
           glib:type-name="EggSignalGroup"
           glib:get-type="egg_signal_group_get_type"
           glib:type-struct="SignalGroupClass">
      <constructor name="new" c:identifier="egg_signal_group_new">
        <doc xml:space="preserve">Creates a new #EggSignalGroup for target instances of @target_type.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #EggSignalGroup</doc>
          <type name="SignalGroup" c:type="EggSignalGroup*"/>
        </return-value>
        <parameters>
          <parameter name="target_type" transfer-ownership="none">
            <doc xml:space="preserve">the #GType of the target instance.</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="block" c:identifier="egg_signal_group_block">
        <doc xml:space="preserve">Blocks all signal handlers managed by @self so they will not
be called during any signal emissions. Must be unblocked exactly
the same number of times it has been blocked to become active again.

This blocked state will be kept across changes of the target instance.

See: g_signal_handler_block().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">the #EggSignalGroup</doc>
            <type name="SignalGroup" c:type="EggSignalGroup*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="connect"
              c:identifier="egg_signal_group_connect"
              introspectable="0">
        <doc xml:space="preserve">Connects @callback to the signal @detailed_signal
on the target instance of @self.

See: g_signal_connect().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #EggSignalGroup</doc>
            <type name="SignalGroup" c:type="EggSignalGroup*"/>
          </instance-parameter>
          <parameter name="detailed_signal" transfer-ownership="none">
            <doc xml:space="preserve">a string of the form "signal-name::detail"</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="c_handler"
                     transfer-ownership="none"
                     scope="notified"
                     closure="2">
            <doc xml:space="preserve">the #GCallback to connect</doc>
            <type name="GObject.Callback" c:type="GCallback"/>
          </parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve">the data to pass to @callback calls</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="connect_after"
              c:identifier="egg_signal_group_connect_after"
              introspectable="0">
        <doc xml:space="preserve">Connects @callback to the signal @detailed_signal
on the target instance of @self.

The @callback will be called after the default handler of the signal.

See: g_signal_connect_after().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #EggSignalGroup</doc>
            <type name="SignalGroup" c:type="EggSignalGroup*"/>
          </instance-parameter>
          <parameter name="detailed_signal" transfer-ownership="none">
            <doc xml:space="preserve">a string of the form "signal-name::detail"</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="c_handler"
                     transfer-ownership="none"
                     scope="notified"
                     closure="2">
            <doc xml:space="preserve">the #GCallback to connect</doc>
            <type name="GObject.Callback" c:type="GCallback"/>
          </parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve">the data to pass to @callback calls</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="connect_data" c:identifier="egg_signal_group_connect_data">
        <doc xml:space="preserve">Connects @callback to the signal @detailed_signal
on the target instance of @self.

See: g_signal_connect_data().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #EggSignalGroup</doc>
            <type name="SignalGroup" c:type="EggSignalGroup*"/>
          </instance-parameter>
          <parameter name="detailed_signal" transfer-ownership="none">
            <doc xml:space="preserve">a string of the form "signal-name::detail"</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="c_handler"
                     transfer-ownership="none"
                     scope="notified"
                     closure="2"
                     destroy="3">
            <doc xml:space="preserve">the #GCallback to connect</doc>
            <type name="GObject.Callback" c:type="GCallback"/>
          </parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve">the data to pass to @callback calls</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="notify" transfer-ownership="none" scope="notified">
            <doc xml:space="preserve">function to be called when disposing of @self</doc>
            <type name="GObject.ClosureNotify" c:type="GClosureNotify"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">the flags used to create the signal connection</doc>
            <type name="GObject.ConnectFlags" c:type="GConnectFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="connect_object"
              c:identifier="egg_signal_group_connect_object"
              introspectable="0">
        <doc xml:space="preserve">Connects @callback to the signal @detailed_signal
on the target object of @self.

Ensures that the @object stays alive during the call to @callback
by temporarily adding a reference count. When the @object is destroyed
the signal handler will automatically be removed.

See: g_signal_connect_object().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #EggSignalGroup</doc>
            <type name="SignalGroup" c:type="EggSignalGroup*"/>
          </instance-parameter>
          <parameter name="detailed_signal" transfer-ownership="none">
            <doc xml:space="preserve">a string of the form "signal-name::detail"</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="c_handler"
                     transfer-ownership="none"
                     scope="notified">
            <doc xml:space="preserve">the #GCallback to connect</doc>
            <type name="GObject.Callback" c:type="GCallback"/>
          </parameter>
          <parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve">the #GObject to pass as data to @callback calls</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <type name="GObject.ConnectFlags" c:type="GConnectFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="connect_swapped"
              c:identifier="egg_signal_group_connect_swapped">
        <doc xml:space="preserve">Connects @callback to the signal @detailed_signal
on the target instance of @self.

The instance on which the signal is emitted and @data
will be swapped when calling @callback.

See: g_signal_connect_swapped().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #EggSignalGroup</doc>
            <type name="SignalGroup" c:type="EggSignalGroup*"/>
          </instance-parameter>
          <parameter name="detailed_signal" transfer-ownership="none">
            <doc xml:space="preserve">a string of the form "signal-name::detail"</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="c_handler"
                     transfer-ownership="none"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve">the #GCallback to connect</doc>
            <type name="GObject.Callback" c:type="GCallback"/>
          </parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve">the data to pass to @callback calls</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_target" c:identifier="egg_signal_group_get_target">
        <doc xml:space="preserve">Gets the target instance used when connecting signals.</doc>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve">The target instance.</doc>
          <type name="GObject.Object" c:type="gpointer"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">the #EggSignalGroup</doc>
            <type name="SignalGroup" c:type="EggSignalGroup*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_target" c:identifier="egg_signal_group_set_target">
        <doc xml:space="preserve">Sets the target instance used when connecting signals. Any signal
that has been registered with egg_signal_group_connect_object() or
similar functions will be connected to this object.

If the target instance was previously set, signals will be
disconnected from that object prior to connecting to @target.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">the #EggSignalGroup.</doc>
            <type name="SignalGroup" c:type="EggSignalGroup*"/>
          </instance-parameter>
          <parameter name="target"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">The target instance used
    when connecting signals.</doc>
            <type name="GObject.Object" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="unblock" c:identifier="egg_signal_group_unblock">
        <doc xml:space="preserve">Unblocks all signal handlers managed by @self so they will be
called again during any signal emissions unless it is blocked
again. Must be unblocked exactly the same number of times it
has been blocked to become active again.

See: g_signal_handler_unblock().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">the #EggSignalGroup</doc>
            <type name="SignalGroup" c:type="EggSignalGroup*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="target" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">The target instance used when connecting signals.</doc>
        <type name="GObject.Object"/>
      </property>
      <property name="target-type"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The GType of the target property.</doc>
        <type name="GType" c:type="GType"/>
      </property>
      <glib:signal name="bind" when="last">
        <doc xml:space="preserve">This signal is emitted when the target instance of @self
is set to a new #GObject.

This signal will only be emitted if the target of @self is non-%NULL.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="instance" transfer-ownership="none">
            <doc xml:space="preserve">a #GObject</doc>
            <type name="GObject.Object"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="unbind" when="last">
        <doc xml:space="preserve">This signal is emitted when the target instance of @self
is set to a new #GObject.

This signal will only be emitted if the previous target
of @self is non-%NULL.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="SignalGroupClass"
            c:type="EggSignalGroupClass"
            glib:is-gtype-struct-for="SignalGroup">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="StateMachine"
           c:symbol-prefix="state_machine"
           c:type="EggStateMachine"
           parent="GObject.Object"
           glib:type-name="EggStateMachine"
           glib:get-type="egg_state_machine_get_type"
           glib:type-struct="StateMachineClass">
      <implements name="Gtk.Buildable"/>
      <constructor name="new" c:identifier="egg_state_machine_new">
        <return-value transfer-ownership="full">
          <type name="StateMachine" c:type="EggStateMachine*"/>
        </return-value>
      </constructor>
      <method name="add_binding" c:identifier="egg_state_machine_add_binding">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="StateMachine" c:type="EggStateMachine*"/>
          </instance-parameter>
          <parameter name="state" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="source_object" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="source_property" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="target_object" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="target_property" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <type name="GObject.BindingFlags" c:type="GBindingFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_property"
              c:identifier="egg_state_machine_add_property"
              introspectable="0">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="StateMachine" c:type="EggStateMachine*"/>
          </instance-parameter>
          <parameter name="state" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="object" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="property" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="add_property_valist"
              c:identifier="egg_state_machine_add_property_valist"
              introspectable="0">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="StateMachine" c:type="EggStateMachine*"/>
          </instance-parameter>
          <parameter name="state" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="object" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="property" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="var_args" transfer-ownership="none">
            <type name="va_list" c:type="va_list"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_propertyv"
              c:identifier="egg_state_machine_add_propertyv">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="StateMachine" c:type="EggStateMachine*"/>
          </instance-parameter>
          <parameter name="state" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="object" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="property" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="GObject.Value" c:type="const GValue*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_style" c:identifier="egg_state_machine_add_style">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="StateMachine" c:type="EggStateMachine*"/>
          </instance-parameter>
          <parameter name="state" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="widget" transfer-ownership="none">
            <type name="Gtk.Widget" c:type="GtkWidget*"/>
          </parameter>
          <parameter name="style" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="connect_object"
              c:identifier="egg_state_machine_connect_object"
              introspectable="0">
        <doc xml:space="preserve">Connects to the @detailed_signal of @source only when the current
state of the state machine is @state.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">A #EggStateMachine.</doc>
            <type name="StateMachine" c:type="EggStateMachine*"/>
          </instance-parameter>
          <parameter name="state" transfer-ownership="none">
            <doc xml:space="preserve">The state the signal connection should exist within</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">the source object to connect to</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="detailed_signal" transfer-ownership="none">
            <doc xml:space="preserve">The detailed signal of @source to connect.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="notified"
                     closure="4">
            <doc xml:space="preserve">The callback to execute upon signal emission.</doc>
            <type name="GObject.Callback" c:type="GCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">The user data for @callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">signal connection flags.</doc>
            <type name="GObject.ConnectFlags" c:type="GConnectFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_action"
              c:identifier="egg_state_machine_create_action">
        <doc xml:space="preserve">Creates a new #GAction with the name of @name.

Setting the state of this action will toggle the state of the state machine.
You should use g_variant_new_string() or similar to create the state.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A newly created #GAction.</doc>
          <type name="Gio.Action" c:type="GAction*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">An #EggStateMachine</doc>
            <type name="StateMachine" c:type="EggStateMachine*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">the name of the action.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_state" c:identifier="egg_state_machine_get_state">
        <doc xml:space="preserve">Gets the #EggStateMachine:state property. This is the name of the
current state of the machine.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The current state of the machine.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">the #EggStateMachine.</doc>
            <type name="StateMachine" c:type="EggStateMachine*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_state" c:identifier="egg_state_machine_set_state">
        <doc xml:space="preserve">Sets the #EggStateMachine:state property.

Registered state transformations will be applied during the state
transformation.

If the transition results in a cyclic operation, the state will stop at
the last state before the cycle was detected.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">the #EggStateMachine @self: the #</doc>
            <type name="StateMachine" c:type="EggStateMachine*"/>
          </instance-parameter>
          <parameter name="state" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <property name="state" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="StateMachineClass"
            c:type="EggStateMachineClass"
            glib:is-gtype-struct-for="StateMachine">
      <field name="parent">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="TaskCache"
           c:symbol-prefix="task_cache"
           c:type="EggTaskCache"
           parent="GObject.Object"
           glib:type-name="EggTaskCache"
           glib:get-type="egg_task_cache_get_type"
           glib:type-struct="TaskCacheClass">
      <constructor name="new"
                   c:identifier="egg_task_cache_new"
                   introspectable="0">
        <return-value transfer-ownership="full">
          <type name="TaskCache" c:type="EggTaskCache*"/>
        </return-value>
        <parameters>
          <parameter name="key_hash_func" transfer-ownership="none">
            <type name="GLib.HashFunc" c:type="GHashFunc"/>
          </parameter>
          <parameter name="key_equal_func" transfer-ownership="none">
            <type name="GLib.EqualFunc" c:type="GEqualFunc"/>
          </parameter>
          <parameter name="key_copy_func" transfer-ownership="none">
            <type name="GObject.BoxedCopyFunc" c:type="GBoxedCopyFunc"/>
          </parameter>
          <parameter name="key_destroy_func" transfer-ownership="none">
            <type name="GObject.BoxedFreeFunc" c:type="GBoxedFreeFunc"/>
          </parameter>
          <parameter name="value_copy_func" transfer-ownership="none">
            <type name="GObject.BoxedCopyFunc" c:type="GBoxedCopyFunc"/>
          </parameter>
          <parameter name="value_free_func" transfer-ownership="none">
            <type name="GObject.BoxedFreeFunc" c:type="GBoxedFreeFunc"/>
          </parameter>
          <parameter name="time_to_live_msec" transfer-ownership="none">
            <type name="gint64" c:type="gint64"/>
          </parameter>
          <parameter name="populate_callback"
                     transfer-ownership="none"
                     scope="notified"
                     closure="8"
                     destroy="9">
            <type name="TaskCacheCallback" c:type="EggTaskCacheCallback"/>
          </parameter>
          <parameter name="populate_callback_data" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="populate_callback_data_destroy"
                     transfer-ownership="none"
                     scope="async">
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="evict" c:identifier="egg_task_cache_evict">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="TaskCache" c:type="EggTaskCache*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <type name="gpointer" c:type="gconstpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_async" c:identifier="egg_task_cache_get_async">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="TaskCache" c:type="EggTaskCache*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <type name="gpointer" c:type="gconstpointer"/>
          </parameter>
          <parameter name="force_update" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="4">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_finish"
              c:identifier="egg_task_cache_get_finish"
              throws="1">
        <doc xml:space="preserve">Finish a call to egg_task_cache_get_async().</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">The result from the cache.</doc>
          <type name="gpointer" c:type="gpointer"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="TaskCache" c:type="EggTaskCache*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_values"
              c:identifier="egg_task_cache_get_values"
              introspectable="0">
        <doc xml:space="preserve">Gets all the values in the cache.

The caller owns the resulting GPtrArray, which itself owns a reference to the children.</doc>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve">The values.</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="gpointer" c:type="gpointer"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="TaskCache" c:type="EggTaskCache*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="peek" c:identifier="egg_task_cache_peek">
        <doc xml:space="preserve">Peeks to see @key is contained in the cache and returns the
matching #GObject if it does.

The reference count of the resulting #GObject is not incremented.
For that reason, it is important to remember that this function
may only be called from the main thread.</doc>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve">A #GObject or
  %NULL if the key was not found in the cache.</doc>
          <type name="GObject.Object" c:type="gpointer"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">An #EggTaskCache</doc>
            <type name="TaskCache" c:type="EggTaskCache*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve">The key for the cache</doc>
            <type name="gpointer" c:type="gconstpointer"/>
          </parameter>
        </parameters>
      </method>
      <property name="key-copy-func"
                readable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="gpointer" c:type="gpointer"/>
      </property>
      <property name="key-destroy-func"
                readable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="gpointer" c:type="gpointer"/>
      </property>
      <property name="key-equal-func"
                readable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="gpointer" c:type="gpointer"/>
      </property>
      <property name="key-hash-func"
                readable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="gpointer" c:type="gpointer"/>
      </property>
      <property name="populate-callback"
                readable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="gpointer" c:type="gpointer"/>
      </property>
      <property name="populate-callback-data"
                readable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="gpointer" c:type="gpointer"/>
      </property>
      <property name="populate-callback-data-destroy"
                readable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="gpointer" c:type="gpointer"/>
      </property>
      <property name="time-to-live"
                readable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve">This is the number of milliseconds before an item should be evicted
from the cache.

A value of zero indicates no eviction.</doc>
        <type name="gint64" c:type="gint64"/>
      </property>
      <property name="value-copy-func"
                readable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="gpointer" c:type="gpointer"/>
      </property>
      <property name="value-destroy-func"
                readable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="gpointer" c:type="gpointer"/>
      </property>
    </class>
    <callback name="TaskCacheCallback" c:type="EggTaskCacheCallback">
      <doc xml:space="preserve">#EggTaskCacheCallback is the prototype for a function to be executed to
populate a an item in the cache.

This function will be executed when a fault (cache miss) occurs from
a caller requesting an item from the cache.

The callee may complete the operation asynchronously, but MUST return
either a GObject using g_task_return_pointer() or a #GError using
g_task_return_error() or g_task_return_new_error().</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="self" transfer-ownership="none">
          <doc xml:space="preserve">An #EggTaskCache.</doc>
          <type name="TaskCache" c:type="EggTaskCache*"/>
        </parameter>
        <parameter name="key" transfer-ownership="none">
          <doc xml:space="preserve">the key to fetch</doc>
          <type name="gpointer" c:type="gconstpointer"/>
        </parameter>
        <parameter name="task" transfer-ownership="none">
          <doc xml:space="preserve">the task to be completed</doc>
          <type name="Gio.Task" c:type="GTask*"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none" closure="3">
          <doc xml:space="preserve">user_data registered at initialization.</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <record name="TaskCacheClass"
            c:type="EggTaskCacheClass"
            glib:is-gtype-struct-for="TaskCache">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <function name="object_animate"
              c:identifier="egg_object_animate"
              introspectable="0">
      <doc xml:space="preserve">Animates the properties of @object. The can be set in a similar manner to g_object_set(). They
will be animated from their current value to the target value over the time period.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">A #EggAnimation.
Side effects: None.</doc>
        <type name="Animation" c:type="EggAnimation*"/>
      </return-value>
      <parameters>
        <parameter name="object" transfer-ownership="none">
          <doc xml:space="preserve">A #GObject.</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="mode" transfer-ownership="none">
          <doc xml:space="preserve">The animation mode.</doc>
          <type name="AnimationMode" c:type="EggAnimationMode"/>
        </parameter>
        <parameter name="duration_msec" transfer-ownership="none">
          <doc xml:space="preserve">The duration in milliseconds.</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="frame_clock" transfer-ownership="none">
          <type name="Gdk.FrameClock" c:type="GdkFrameClock*"/>
        </parameter>
        <parameter name="first_property" transfer-ownership="none">
          <doc xml:space="preserve">The first property to animate.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="..." transfer-ownership="none">
          <varargs/>
        </parameter>
      </parameters>
    </function>
    <function name="object_animate_full"
              c:identifier="egg_object_animate_full"
              introspectable="0">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">A #EggAnimation.</doc>
        <type name="Animation" c:type="EggAnimation*"/>
      </return-value>
      <parameters>
        <parameter name="object" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="mode" transfer-ownership="none">
          <type name="AnimationMode" c:type="EggAnimationMode"/>
        </parameter>
        <parameter name="duration_msec" transfer-ownership="none">
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="frame_clock" transfer-ownership="none">
          <type name="Gdk.FrameClock" c:type="GdkFrameClock*"/>
        </parameter>
        <parameter name="notify" transfer-ownership="none" scope="async">
          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
        </parameter>
        <parameter name="notify_data" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="first_property" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="..." transfer-ownership="none">
          <varargs/>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
