<?xml version="1.0"?>
<!-- This file was automatically generated from C sources - DO NOT EDIT!
To affect the contents of this file, edit the original C definitions,
and/or use gtk-doc annotations.  -->
<repository version="1.2"
            xmlns="http://www.gtk.org/introspection/core/1.0"
            xmlns:c="http://www.gtk.org/introspection/c/1.0"
            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
  <include name="GLib" version="2.0"/>
  <include name="GObject" version="2.0"/>
  <package name="atk"/>
  <namespace name="Atk"
             version="1.0"
             shared-library="libatk-1.0.so.2801.0"
             c:identifier-prefixes="Atk"
             c:symbol-prefixes="atk">
    <alias name="AttributeSet" c:type="AtkAttributeSet">
      <doc xml:whitespace="preserve">This is a singly-linked list (a #GSList) of #AtkAttribute. It is
used by atk_text_get_run_attributes(), atk_text_get_default_attributes()
and atk_editable_text_set_run_attributes()</doc>
      <type name="GLib.SList" c:type="GSList"/>
    </alias>
    <alias name="State" c:type="AtkState">
      <type name="guint64" c:type="guint64"/>
    </alias>
    <interface name="Action"
               c:symbol-prefix="action"
               c:type="AtkAction"
               glib:type-name="AtkAction"
               glib:get-type="atk_action_get_type"
               glib:type-struct="ActionIface">
      <virtual-method name="do_action" invoker="do_action">
        <doc xml:whitespace="preserve">Perform the specified action on the object.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if success, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="i" transfer-ownership="none">
            <doc xml:whitespace="preserve">the action index corresponding to the action to be performed</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_description" invoker="get_description">
        <doc xml:whitespace="preserve">Returns a description of the specified action of the object.

Returns a description string, or %NULL
if @action does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="i" transfer-ownership="none">
            <doc xml:whitespace="preserve">the action index corresponding to the action to be performed</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_keybinding" invoker="get_keybinding">
        <doc xml:whitespace="preserve">Returns a keybinding associated with this action, if one exists.
The returned string is in the format "&lt;a&gt;;&lt;b&gt;;&lt;c&gt;"
(i.e. semicolon-delimited), where &lt;a&gt; is the keybinding which
activates the object if it is presently enabled onscreen, 
&lt;b&gt; corresponds to the keybinding or sequence of keys
which invokes the action even if the relevant element is not
currently posted on screen (for instance, for a menu item it
posts the parent menus before invoking).  The last token in the
above string, if non-empty, represents a keyboard shortcut which
invokes the same action without posting the component or its
enclosing menus or dialogs. 

Returns a string representing the available keybindings, or %NULL
if there is no keybinding for this action.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="i" transfer-ownership="none">
            <doc xml:whitespace="preserve">the action index corresponding to the action to be performed</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_localized_name" invoker="get_localized_name">
        <doc xml:whitespace="preserve">Returns the localized name of the specified action of the object.

Returns a name string, or %NULL
if @action does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="i" transfer-ownership="none">
            <doc xml:whitespace="preserve">the action index corresponding to the action to be performed</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_n_actions" invoker="get_n_actions">
        <doc xml:whitespace="preserve">Gets the number of accessible actions available on the object.
If there are more than one, the first one is considered the
"default" action of the object.

implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a the number of actions, or 0 if @action does not</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </virtual-method>
      <virtual-method name="get_name" invoker="get_name">
        <doc xml:whitespace="preserve">Returns a non-localized string naming the specified action of the 
object. This name is generally not descriptive of the end result 
of the action, but instead names the 'interaction type' which the 
object supports. By convention, the above strings should be used to 
represent the actions which correspond to the common point-and-click 
interaction techniques of the same name: i.e. 
"click", "press", "release", "drag", "drop", "popup", etc.
The "popup" action should be used to pop up a context menu for the 
object, if one exists.

For technical reasons, some toolkits cannot guarantee that the 
reported action is actually 'bound' to a nontrivial user event;
i.e. the result of some actions via atk_action_do_action() may be
NIL.

Returns a name string, or %NULL
if @action does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="i" transfer-ownership="none">
            <doc xml:whitespace="preserve">the action index corresponding to the action to be performed</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_description" invoker="set_description">
        <doc xml:whitespace="preserve">Sets a description of the specified action of the object.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gboolean representing if the description was successfully set;</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="i" transfer-ownership="none">
            <doc xml:whitespace="preserve">the action index corresponding to the action to be performed</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="desc" transfer-ownership="none">
            <doc xml:whitespace="preserve">the description to be assigned to this action</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="do_action" c:identifier="atk_action_do_action">
        <doc xml:whitespace="preserve">Perform the specified action on the object.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if success, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="i" transfer-ownership="none">
            <doc xml:whitespace="preserve">the action index corresponding to the action to be performed</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_description" c:identifier="atk_action_get_description">
        <doc xml:whitespace="preserve">Returns a description of the specified action of the object.

Returns a description string, or %NULL
if @action does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="i" transfer-ownership="none">
            <doc xml:whitespace="preserve">the action index corresponding to the action to be performed</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_keybinding" c:identifier="atk_action_get_keybinding">
        <doc xml:whitespace="preserve">Returns a keybinding associated with this action, if one exists.
The returned string is in the format "&lt;a&gt;;&lt;b&gt;;&lt;c&gt;"
(i.e. semicolon-delimited), where &lt;a&gt; is the keybinding which
activates the object if it is presently enabled onscreen, 
&lt;b&gt; corresponds to the keybinding or sequence of keys
which invokes the action even if the relevant element is not
currently posted on screen (for instance, for a menu item it
posts the parent menus before invoking).  The last token in the
above string, if non-empty, represents a keyboard shortcut which
invokes the same action without posting the component or its
enclosing menus or dialogs. 

Returns a string representing the available keybindings, or %NULL
if there is no keybinding for this action.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="i" transfer-ownership="none">
            <doc xml:whitespace="preserve">the action index corresponding to the action to be performed</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_localized_name"
              c:identifier="atk_action_get_localized_name">
        <doc xml:whitespace="preserve">Returns the localized name of the specified action of the object.

Returns a name string, or %NULL
if @action does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="i" transfer-ownership="none">
            <doc xml:whitespace="preserve">the action index corresponding to the action to be performed</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_n_actions" c:identifier="atk_action_get_n_actions">
        <doc xml:whitespace="preserve">Gets the number of accessible actions available on the object.
If there are more than one, the first one is considered the
"default" action of the object.

implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a the number of actions, or 0 if @action does not</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </method>
      <method name="get_name" c:identifier="atk_action_get_name">
        <doc xml:whitespace="preserve">Returns a non-localized string naming the specified action of the 
object. This name is generally not descriptive of the end result 
of the action, but instead names the 'interaction type' which the 
object supports. By convention, the above strings should be used to 
represent the actions which correspond to the common point-and-click 
interaction techniques of the same name: i.e. 
"click", "press", "release", "drag", "drop", "popup", etc.
The "popup" action should be used to pop up a context menu for the 
object, if one exists.

For technical reasons, some toolkits cannot guarantee that the 
reported action is actually 'bound' to a nontrivial user event;
i.e. the result of some actions via atk_action_do_action() may be
NIL.

Returns a name string, or %NULL
if @action does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="i" transfer-ownership="none">
            <doc xml:whitespace="preserve">the action index corresponding to the action to be performed</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_description" c:identifier="atk_action_set_description">
        <doc xml:whitespace="preserve">Sets a description of the specified action of the object.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gboolean representing if the description was successfully set;</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="i" transfer-ownership="none">
            <doc xml:whitespace="preserve">the action index corresponding to the action to be performed</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="desc" transfer-ownership="none">
            <doc xml:whitespace="preserve">the description to be assigned to this action</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
    </interface>
    <record name="ActionIface"
            c:type="AtkActionIface"
            glib:is-gtype-struct-for="Action">
      <field name="parent">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="do_action">
        <callback name="do_action">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">%TRUE if success, %FALSE otherwise</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="action" transfer-ownership="none">
              <type name="Action" c:type="AtkAction*"/>
            </parameter>
            <parameter name="i" transfer-ownership="none">
              <doc xml:whitespace="preserve">the action index corresponding to the action to be performed</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_n_actions">
        <callback name="get_n_actions">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">a the number of actions, or 0 if @action does not</doc>
            <type name="gint" c:type="gint"/>
          </return-value>
          <parameters>
            <parameter name="action" transfer-ownership="none">
              <type name="Action" c:type="AtkAction*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_description">
        <callback name="get_description">
          <return-value transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </return-value>
          <parameters>
            <parameter name="action" transfer-ownership="none">
              <type name="Action" c:type="AtkAction*"/>
            </parameter>
            <parameter name="i" transfer-ownership="none">
              <doc xml:whitespace="preserve">the action index corresponding to the action to be performed</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_name">
        <callback name="get_name">
          <return-value transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </return-value>
          <parameters>
            <parameter name="action" transfer-ownership="none">
              <type name="Action" c:type="AtkAction*"/>
            </parameter>
            <parameter name="i" transfer-ownership="none">
              <doc xml:whitespace="preserve">the action index corresponding to the action to be performed</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_keybinding">
        <callback name="get_keybinding">
          <return-value transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </return-value>
          <parameters>
            <parameter name="action" transfer-ownership="none">
              <type name="Action" c:type="AtkAction*"/>
            </parameter>
            <parameter name="i" transfer-ownership="none">
              <doc xml:whitespace="preserve">the action index corresponding to the action to be performed</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_description">
        <callback name="set_description">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">a gboolean representing if the description was successfully set;</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="action" transfer-ownership="none">
              <type name="Action" c:type="AtkAction*"/>
            </parameter>
            <parameter name="i" transfer-ownership="none">
              <doc xml:whitespace="preserve">the action index corresponding to the action to be performed</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="desc" transfer-ownership="none">
              <doc xml:whitespace="preserve">the description to be assigned to this action</doc>
              <type name="utf8" c:type="gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_localized_name">
        <callback name="get_localized_name">
          <return-value transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </return-value>
          <parameters>
            <parameter name="action" transfer-ownership="none">
              <type name="Action" c:type="AtkAction*"/>
            </parameter>
            <parameter name="i" transfer-ownership="none">
              <doc xml:whitespace="preserve">the action index corresponding to the action to be performed</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="pad2">
        <type name="Function" c:type="AtkFunction"/>
      </field>
    </record>
    <record name="Attribute" c:type="AtkAttribute">
      <doc xml:whitespace="preserve">A string name/value pair representing a text attribute.</doc>
      <field name="name" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="value" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <function name="set_free" c:identifier="atk_attribute_set_free">
        <doc xml:whitespace="preserve">Frees the memory used by an #AtkAttributeSet, including all its
#AtkAttributes.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="attrib_set" transfer-ownership="none">
            <doc xml:whitespace="preserve">The #AtkAttributeSet to free</doc>
            <type name="AttributeSet" c:type="AtkAttributeSet*"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <interface name="Component"
               c:symbol-prefix="component"
               c:type="AtkComponent"
               glib:type-name="AtkComponent"
               glib:get-type="atk_component_get_type"
               glib:type-struct="ComponentIface">
      <virtual-method name="add_focus_handler"
                      invoker="add_focus_handler"
                      introspectable="0">
        <doc xml:whitespace="preserve">Add the specified handler to the set of functions to be called 
when this object receives focus events (in or out). If the handler is
already added it is not added again

or zero if the handler was already added.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a handler id which can be used in atk_component_remove_focus_handler</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <parameter name="handler" transfer-ownership="none">
            <doc xml:whitespace="preserve">The #AtkFocusHandler to be attached to @component</doc>
            <type name="FocusHandler" c:type="AtkFocusHandler"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="bounds_changed">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="bounds" transfer-ownership="none">
            <type name="Rectangle" c:type="AtkRectangle*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="contains" invoker="contains">
        <doc xml:whitespace="preserve">Checks whether the specified point is within the extent of the @component.

the extent of the @component or not</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE or %FALSE indicating whether the specified point is within</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="x" transfer-ownership="none">
            <doc xml:whitespace="preserve">x coordinate</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:whitespace="preserve">y coordinate</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="coord_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
            <type name="CoordType" c:type="AtkCoordType"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_alpha" invoker="get_alpha" version="1.12">
        <doc xml:whitespace="preserve">Returns the alpha value (i.e. the opacity) for this
@component, on a scale from 0 (fully transparent) to 1.0
(fully opaque).</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">An alpha value from 0 to 1.0, inclusive.</doc>
          <type name="gdouble" c:type="gdouble"/>
        </return-value>
      </virtual-method>
      <virtual-method name="get_extents" invoker="get_extents">
        <doc xml:whitespace="preserve">Gets the rectangle which gives the extent of the @component.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="x" transfer-ownership="none">
            <doc xml:whitespace="preserve">address of #gint to put x coordinate</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:whitespace="preserve">address of #gint to put y coordinate</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:whitespace="preserve">address of #gint to put width</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:whitespace="preserve">address of #gint to put height</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="coord_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
            <type name="CoordType" c:type="AtkCoordType"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_layer" invoker="get_layer">
        <doc xml:whitespace="preserve">Gets the layer of the component.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an #AtkLayer which is the layer of the component</doc>
          <type name="Layer" c:type="AtkLayer"/>
        </return-value>
      </virtual-method>
      <virtual-method name="get_mdi_zorder" invoker="get_mdi_zorder">
        <doc xml:whitespace="preserve">Gets the zorder of the component. The value G_MININT will be returned 
if the layer of the component is not ATK_LAYER_MDI or ATK_LAYER_WINDOW.

which the component is shown in relation to other components in the same 
container.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint which is the zorder of the component, i.e. the depth at</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </virtual-method>
      <virtual-method name="get_position" invoker="get_position">
        <doc xml:whitespace="preserve">Gets the position of @component in the form of 
a point specifying @component's top-left corner.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="x" transfer-ownership="none">
            <doc xml:whitespace="preserve">address of #gint to put x coordinate position</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:whitespace="preserve">address of #gint to put y coordinate position</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="coord_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
            <type name="CoordType" c:type="AtkCoordType"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_size" invoker="get_size">
        <doc xml:whitespace="preserve">Gets the size of the @component in terms of width and height.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="width" transfer-ownership="none">
            <doc xml:whitespace="preserve">address of #gint to put width of @component</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:whitespace="preserve">address of #gint to put height of @component</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="grab_focus" invoker="grab_focus">
        <doc xml:whitespace="preserve">Grabs focus for this @component.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </virtual-method>
      <virtual-method name="ref_accessible_at_point"
                      invoker="ref_accessible_at_point">
        <doc xml:whitespace="preserve">Gets a reference to the accessible child, if one exists, at the
coordinate point specified by @x and @y.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a reference to the accessible child, if one exists</doc>
          <type name="Object" c:type="AtkObject*"/>
        </return-value>
        <parameters>
          <parameter name="x" transfer-ownership="none">
            <doc xml:whitespace="preserve">x coordinate</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:whitespace="preserve">y coordinate</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="coord_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
            <type name="CoordType" c:type="AtkCoordType"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="remove_focus_handler"
                      invoker="remove_focus_handler">
        <doc xml:whitespace="preserve">Remove the handler specified by @handler_id from the list of
functions to be executed when this object receives focus events 
(in or out).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="handler_id" transfer-ownership="none">
            <doc xml:whitespace="preserve">the handler id of the focus handler to be removed from @component</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_extents" invoker="set_extents">
        <doc xml:whitespace="preserve">Sets the extents of @component.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE or %FALSE whether the extents were set or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="x" transfer-ownership="none">
            <doc xml:whitespace="preserve">x coordinate</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:whitespace="preserve">y coordinate</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:whitespace="preserve">width to set for @component</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:whitespace="preserve">height to set for @component</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="coord_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
            <type name="CoordType" c:type="AtkCoordType"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_position" invoker="set_position">
        <doc xml:whitespace="preserve">Sets the postition of @component.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE or %FALSE whether or not the position was set or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="x" transfer-ownership="none">
            <doc xml:whitespace="preserve">x coordinate</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:whitespace="preserve">y coordinate</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="coord_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
            <type name="CoordType" c:type="AtkCoordType"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_size" invoker="set_size">
        <doc xml:whitespace="preserve">Set the size of the @component in terms of width and height.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE or %FALSE whether the size was set or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="width" transfer-ownership="none">
            <doc xml:whitespace="preserve">width to set for @component</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:whitespace="preserve">height to set for @component</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="add_focus_handler"
              c:identifier="atk_component_add_focus_handler"
              introspectable="0">
        <doc xml:whitespace="preserve">Add the specified handler to the set of functions to be called 
when this object receives focus events (in or out). If the handler is
already added it is not added again

or zero if the handler was already added.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a handler id which can be used in atk_component_remove_focus_handler</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <parameter name="handler" transfer-ownership="none">
            <doc xml:whitespace="preserve">The #AtkFocusHandler to be attached to @component</doc>
            <type name="FocusHandler" c:type="AtkFocusHandler"/>
          </parameter>
        </parameters>
      </method>
      <method name="contains" c:identifier="atk_component_contains">
        <doc xml:whitespace="preserve">Checks whether the specified point is within the extent of the @component.

the extent of the @component or not</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE or %FALSE indicating whether the specified point is within</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="x" transfer-ownership="none">
            <doc xml:whitespace="preserve">x coordinate</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:whitespace="preserve">y coordinate</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="coord_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
            <type name="CoordType" c:type="AtkCoordType"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_alpha"
              c:identifier="atk_component_get_alpha"
              version="1.12">
        <doc xml:whitespace="preserve">Returns the alpha value (i.e. the opacity) for this
@component, on a scale from 0 (fully transparent) to 1.0
(fully opaque).</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">An alpha value from 0 to 1.0, inclusive.</doc>
          <type name="gdouble" c:type="gdouble"/>
        </return-value>
      </method>
      <method name="get_extents" c:identifier="atk_component_get_extents">
        <doc xml:whitespace="preserve">Gets the rectangle which gives the extent of the @component.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="x" transfer-ownership="none">
            <doc xml:whitespace="preserve">address of #gint to put x coordinate</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:whitespace="preserve">address of #gint to put y coordinate</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:whitespace="preserve">address of #gint to put width</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:whitespace="preserve">address of #gint to put height</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="coord_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
            <type name="CoordType" c:type="AtkCoordType"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_layer" c:identifier="atk_component_get_layer">
        <doc xml:whitespace="preserve">Gets the layer of the component.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an #AtkLayer which is the layer of the component</doc>
          <type name="Layer" c:type="AtkLayer"/>
        </return-value>
      </method>
      <method name="get_mdi_zorder"
              c:identifier="atk_component_get_mdi_zorder">
        <doc xml:whitespace="preserve">Gets the zorder of the component. The value G_MININT will be returned 
if the layer of the component is not ATK_LAYER_MDI or ATK_LAYER_WINDOW.

which the component is shown in relation to other components in the same 
container.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint which is the zorder of the component, i.e. the depth at</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </method>
      <method name="get_position" c:identifier="atk_component_get_position">
        <doc xml:whitespace="preserve">Gets the position of @component in the form of 
a point specifying @component's top-left corner.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="x" transfer-ownership="none">
            <doc xml:whitespace="preserve">address of #gint to put x coordinate position</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:whitespace="preserve">address of #gint to put y coordinate position</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="coord_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
            <type name="CoordType" c:type="AtkCoordType"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_size" c:identifier="atk_component_get_size">
        <doc xml:whitespace="preserve">Gets the size of the @component in terms of width and height.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="width" transfer-ownership="none">
            <doc xml:whitespace="preserve">address of #gint to put width of @component</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:whitespace="preserve">address of #gint to put height of @component</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="grab_focus" c:identifier="atk_component_grab_focus">
        <doc xml:whitespace="preserve">Grabs focus for this @component.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="ref_accessible_at_point"
              c:identifier="atk_component_ref_accessible_at_point">
        <doc xml:whitespace="preserve">Gets a reference to the accessible child, if one exists, at the
coordinate point specified by @x and @y.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a reference to the accessible child, if one exists</doc>
          <type name="Object" c:type="AtkObject*"/>
        </return-value>
        <parameters>
          <parameter name="x" transfer-ownership="none">
            <doc xml:whitespace="preserve">x coordinate</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:whitespace="preserve">y coordinate</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="coord_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
            <type name="CoordType" c:type="AtkCoordType"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_focus_handler"
              c:identifier="atk_component_remove_focus_handler">
        <doc xml:whitespace="preserve">Remove the handler specified by @handler_id from the list of
functions to be executed when this object receives focus events 
(in or out).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="handler_id" transfer-ownership="none">
            <doc xml:whitespace="preserve">the handler id of the focus handler to be removed from @component</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_extents" c:identifier="atk_component_set_extents">
        <doc xml:whitespace="preserve">Sets the extents of @component.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE or %FALSE whether the extents were set or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="x" transfer-ownership="none">
            <doc xml:whitespace="preserve">x coordinate</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:whitespace="preserve">y coordinate</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:whitespace="preserve">width to set for @component</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:whitespace="preserve">height to set for @component</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="coord_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
            <type name="CoordType" c:type="AtkCoordType"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_position" c:identifier="atk_component_set_position">
        <doc xml:whitespace="preserve">Sets the postition of @component.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE or %FALSE whether or not the position was set or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="x" transfer-ownership="none">
            <doc xml:whitespace="preserve">x coordinate</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:whitespace="preserve">y coordinate</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="coord_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
            <type name="CoordType" c:type="AtkCoordType"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_size" c:identifier="atk_component_set_size">
        <doc xml:whitespace="preserve">Set the size of the @component in terms of width and height.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE or %FALSE whether the size was set or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="width" transfer-ownership="none">
            <doc xml:whitespace="preserve">width to set for @component</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:whitespace="preserve">height to set for @component</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <glib:signal name="bounds-changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="Rectangle"/>
          </parameter>
        </parameters>
      </glib:signal>
    </interface>
    <record name="ComponentIface"
            c:type="AtkComponentIface"
            glib:is-gtype-struct-for="Component">
      <field name="parent">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="add_focus_handler" introspectable="0">
        <callback name="add_focus_handler" introspectable="0">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">a handler id which can be used in atk_component_remove_focus_handler</doc>
            <type name="guint" c:type="guint"/>
          </return-value>
          <parameters>
            <parameter name="component" transfer-ownership="none">
              <type name="Component" c:type="AtkComponent*"/>
            </parameter>
            <parameter name="handler" transfer-ownership="none">
              <doc xml:whitespace="preserve">The #AtkFocusHandler to be attached to @component</doc>
              <type name="FocusHandler" c:type="AtkFocusHandler"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="contains">
        <callback name="contains">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">%TRUE or %FALSE indicating whether the specified point is within</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="component" transfer-ownership="none">
              <type name="Component" c:type="AtkComponent*"/>
            </parameter>
            <parameter name="x" transfer-ownership="none">
              <doc xml:whitespace="preserve">x coordinate</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="y" transfer-ownership="none">
              <doc xml:whitespace="preserve">y coordinate</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="coord_type" transfer-ownership="none">
              <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
              <type name="CoordType" c:type="AtkCoordType"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="ref_accessible_at_point">
        <callback name="ref_accessible_at_point">
          <return-value transfer-ownership="full">
            <doc xml:whitespace="preserve">a reference to the accessible child, if one exists</doc>
            <type name="Object" c:type="AtkObject*"/>
          </return-value>
          <parameters>
            <parameter name="component" transfer-ownership="none">
              <type name="Component" c:type="AtkComponent*"/>
            </parameter>
            <parameter name="x" transfer-ownership="none">
              <doc xml:whitespace="preserve">x coordinate</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="y" transfer-ownership="none">
              <doc xml:whitespace="preserve">y coordinate</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="coord_type" transfer-ownership="none">
              <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
              <type name="CoordType" c:type="AtkCoordType"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_extents">
        <callback name="get_extents">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="component" transfer-ownership="none">
              <type name="Component" c:type="AtkComponent*"/>
            </parameter>
            <parameter name="x" transfer-ownership="none">
              <doc xml:whitespace="preserve">address of #gint to put x coordinate</doc>
              <type name="gint" c:type="gint*"/>
            </parameter>
            <parameter name="y" transfer-ownership="none">
              <doc xml:whitespace="preserve">address of #gint to put y coordinate</doc>
              <type name="gint" c:type="gint*"/>
            </parameter>
            <parameter name="width" transfer-ownership="none">
              <doc xml:whitespace="preserve">address of #gint to put width</doc>
              <type name="gint" c:type="gint*"/>
            </parameter>
            <parameter name="height" transfer-ownership="none">
              <doc xml:whitespace="preserve">address of #gint to put height</doc>
              <type name="gint" c:type="gint*"/>
            </parameter>
            <parameter name="coord_type" transfer-ownership="none">
              <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
              <type name="CoordType" c:type="AtkCoordType"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_position">
        <callback name="get_position">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="component" transfer-ownership="none">
              <type name="Component" c:type="AtkComponent*"/>
            </parameter>
            <parameter name="x" transfer-ownership="none">
              <doc xml:whitespace="preserve">address of #gint to put x coordinate position</doc>
              <type name="gint" c:type="gint*"/>
            </parameter>
            <parameter name="y" transfer-ownership="none">
              <doc xml:whitespace="preserve">address of #gint to put y coordinate position</doc>
              <type name="gint" c:type="gint*"/>
            </parameter>
            <parameter name="coord_type" transfer-ownership="none">
              <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
              <type name="CoordType" c:type="AtkCoordType"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_size">
        <callback name="get_size">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="component" transfer-ownership="none">
              <type name="Component" c:type="AtkComponent*"/>
            </parameter>
            <parameter name="width" transfer-ownership="none">
              <doc xml:whitespace="preserve">address of #gint to put width of @component</doc>
              <type name="gint" c:type="gint*"/>
            </parameter>
            <parameter name="height" transfer-ownership="none">
              <doc xml:whitespace="preserve">address of #gint to put height of @component</doc>
              <type name="gint" c:type="gint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="grab_focus">
        <callback name="grab_focus">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">%TRUE if successful, %FALSE otherwise.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="component" transfer-ownership="none">
              <type name="Component" c:type="AtkComponent*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="remove_focus_handler">
        <callback name="remove_focus_handler">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="component" transfer-ownership="none">
              <type name="Component" c:type="AtkComponent*"/>
            </parameter>
            <parameter name="handler_id" transfer-ownership="none">
              <doc xml:whitespace="preserve">the handler id of the focus handler to be removed from @component</doc>
              <type name="guint" c:type="guint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_extents">
        <callback name="set_extents">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">%TRUE or %FALSE whether the extents were set or not</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="component" transfer-ownership="none">
              <type name="Component" c:type="AtkComponent*"/>
            </parameter>
            <parameter name="x" transfer-ownership="none">
              <doc xml:whitespace="preserve">x coordinate</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="y" transfer-ownership="none">
              <doc xml:whitespace="preserve">y coordinate</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="width" transfer-ownership="none">
              <doc xml:whitespace="preserve">width to set for @component</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="height" transfer-ownership="none">
              <doc xml:whitespace="preserve">height to set for @component</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="coord_type" transfer-ownership="none">
              <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
              <type name="CoordType" c:type="AtkCoordType"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_position">
        <callback name="set_position">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">%TRUE or %FALSE whether or not the position was set or not</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="component" transfer-ownership="none">
              <type name="Component" c:type="AtkComponent*"/>
            </parameter>
            <parameter name="x" transfer-ownership="none">
              <doc xml:whitespace="preserve">x coordinate</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="y" transfer-ownership="none">
              <doc xml:whitespace="preserve">y coordinate</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="coord_type" transfer-ownership="none">
              <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
              <type name="CoordType" c:type="AtkCoordType"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_size">
        <callback name="set_size">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">%TRUE or %FALSE whether the size was set or not</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="component" transfer-ownership="none">
              <type name="Component" c:type="AtkComponent*"/>
            </parameter>
            <parameter name="width" transfer-ownership="none">
              <doc xml:whitespace="preserve">width to set for @component</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="height" transfer-ownership="none">
              <doc xml:whitespace="preserve">height to set for @component</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_layer">
        <callback name="get_layer">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtkLayer which is the layer of the component</doc>
            <type name="Layer" c:type="AtkLayer"/>
          </return-value>
          <parameters>
            <parameter name="component" transfer-ownership="none">
              <type name="Component" c:type="AtkComponent*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_mdi_zorder">
        <callback name="get_mdi_zorder">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">a gint which is the zorder of the component, i.e. the depth at</doc>
            <type name="gint" c:type="gint"/>
          </return-value>
          <parameters>
            <parameter name="component" transfer-ownership="none">
              <type name="Component" c:type="AtkComponent*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="bounds_changed">
        <callback name="bounds_changed">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="component" transfer-ownership="none">
              <type name="Component" c:type="AtkComponent*"/>
            </parameter>
            <parameter name="bounds" transfer-ownership="none">
              <type name="Rectangle" c:type="AtkRectangle*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_alpha">
        <callback name="get_alpha">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">An alpha value from 0 to 1.0, inclusive.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </return-value>
          <parameters>
            <parameter name="component" transfer-ownership="none">
              <type name="Component" c:type="AtkComponent*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <enumeration name="CoordType"
                 glib:type-name="AtkCoordType"
                 glib:get-type="atk_coord_type_get_type"
                 c:type="AtkCoordType">
      <member name="screen"
              value="0"
              c:identifier="ATK_XY_SCREEN"
              glib:nick="screen"/>
      <member name="window"
              value="1"
              c:identifier="ATK_XY_WINDOW"
              glib:nick="window"/>
    </enumeration>
    <interface name="Document"
               c:symbol-prefix="document"
               c:type="AtkDocument"
               glib:type-name="AtkDocument"
               glib:get-type="atk_document_get_type"
               glib:type-struct="DocumentIface">
      <virtual-method name="get_document" invoker="get_document">
        <doc xml:whitespace="preserve">Gets a %gpointer that points to an instance of the DOM.  It is
up to the caller to check atk_document_get_type to determine
how to cast this pointer.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a %gpointer that points to an instance of the DOM.</doc>
          <type name="gpointer" c:type="gpointer"/>
        </return-value>
      </virtual-method>
      <virtual-method name="get_document_attribute_value">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="attribute_name" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_document_attributes" introspectable="0">
        <return-value>
          <type name="AttributeSet" c:type="AtkAttributeSet*"/>
        </return-value>
      </virtual-method>
      <virtual-method name="get_document_locale">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </virtual-method>
      <virtual-method name="get_document_type" invoker="get_document_type">
        <doc xml:whitespace="preserve">Gets a string indicating the document type.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a string indicating the document type</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </virtual-method>
      <virtual-method name="set_document_attribute">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="attribute_name" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="attribute_value" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_attribute_value"
              c:identifier="atk_document_get_attribute_value"
              version="1.12">
        <doc xml:whitespace="preserve">document, or NULL if a value for #attribute_name has not been specified
for this document.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a string value associated with the named attribute for this</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="attribute_name" transfer-ownership="none">
            <doc xml:whitespace="preserve">a character string representing the name of the attribute whose value is being queried.</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_attributes"
              c:identifier="atk_document_get_attributes"
              version="1.12">
        <doc xml:whitespace="preserve">Gets an AtkAttributeSet which describes document-wide
attributes as name-value pairs.


set name-value-pair attributes associated with this document
as a whole.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">An AtkAttributeSet containing the explicitly</doc>
          <type name="AttributeSet" c:type="AtkAttributeSet*"/>
        </return-value>
      </method>
      <method name="get_document" c:identifier="atk_document_get_document">
        <doc xml:whitespace="preserve">Gets a %gpointer that points to an instance of the DOM.  It is
up to the caller to check atk_document_get_type to determine
how to cast this pointer.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a %gpointer that points to an instance of the DOM.</doc>
          <type name="gpointer" c:type="gpointer"/>
        </return-value>
      </method>
      <method name="get_document_type"
              c:identifier="atk_document_get_document_type">
        <doc xml:whitespace="preserve">Gets a string indicating the document type.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a string indicating the document type</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_locale" c:identifier="atk_document_get_locale">
        <doc xml:whitespace="preserve">Gets a UTF-8 string indicating the POSIX-style LC_MESSAGES locale
of the content of this document instance.  Individual
text substrings or images within this document may have
a different locale, see atk_text_get_attributes and
atk_image_get_image_locale.

locale of the document content as a whole, or NULL if
the document content does not specify a locale.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a UTF-8 string indicating the POSIX-style LC_MESSAGES</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="set_attribute_value"
              c:identifier="atk_document_set_attribute_value"
              version="1.12">
        <doc xml:whitespace="preserve">for this document, FALSE otherwise (e.g. if the document does not
allow the attribute to be modified).</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">TRUE if #value is successfully associated with #attribute_name</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="attribute_name" transfer-ownership="none">
            <doc xml:whitespace="preserve">a character string representing the name of the attribute whose value is being set.</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="attribute_value" transfer-ownership="none">
            <doc xml:whitespace="preserve">a string value to be associated with #attribute_name.</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <glib:signal name="load-complete" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
      </glib:signal>
      <glib:signal name="load-stopped" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
      </glib:signal>
      <glib:signal name="reload" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
      </glib:signal>
    </interface>
    <record name="DocumentIface"
            c:type="AtkDocumentIface"
            glib:is-gtype-struct-for="Document">
      <field name="parent">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="get_document_type">
        <callback name="get_document_type">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">a string indicating the document type</doc>
            <type name="utf8" c:type="gchar*"/>
          </return-value>
          <parameters>
            <parameter name="document" transfer-ownership="none">
              <type name="Document" c:type="AtkDocument*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_document">
        <callback name="get_document">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">a %gpointer that points to an instance of the DOM.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </return-value>
          <parameters>
            <parameter name="document" transfer-ownership="none">
              <type name="Document" c:type="AtkDocument*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_document_locale">
        <callback name="get_document_locale">
          <return-value transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </return-value>
          <parameters>
            <parameter name="document" transfer-ownership="none">
              <type name="Document" c:type="AtkDocument*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_document_attributes" introspectable="0">
        <callback name="get_document_attributes" introspectable="0">
          <return-value>
            <type name="AttributeSet" c:type="AtkAttributeSet*"/>
          </return-value>
          <parameters>
            <parameter name="document" transfer-ownership="none">
              <type name="Document" c:type="AtkDocument*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_document_attribute_value">
        <callback name="get_document_attribute_value">
          <return-value transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </return-value>
          <parameters>
            <parameter name="document" transfer-ownership="none">
              <type name="Document" c:type="AtkDocument*"/>
            </parameter>
            <parameter name="attribute_name" transfer-ownership="none">
              <type name="utf8" c:type="gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_document_attribute">
        <callback name="set_document_attribute">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="document" transfer-ownership="none">
              <type name="Document" c:type="AtkDocument*"/>
            </parameter>
            <parameter name="attribute_name" transfer-ownership="none">
              <type name="utf8" c:type="gchar*"/>
            </parameter>
            <parameter name="attribute_value" transfer-ownership="none">
              <type name="utf8" c:type="gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="pad1">
        <type name="Function" c:type="AtkFunction"/>
      </field>
      <field name="pad2">
        <type name="Function" c:type="AtkFunction"/>
      </field>
      <field name="pad3">
        <type name="Function" c:type="AtkFunction"/>
      </field>
      <field name="pad4">
        <type name="Function" c:type="AtkFunction"/>
      </field>
    </record>
    <interface name="EditableText"
               c:symbol-prefix="editable_text"
               c:type="AtkEditableText"
               glib:type-name="AtkEditableText"
               glib:get-type="atk_editable_text_get_type"
               glib:type-struct="EditableTextIface">
      <virtual-method name="copy_text" invoker="copy_text">
        <doc xml:whitespace="preserve">Copy text from @start_pos up to, but not including @end_pos 
to the clipboard.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="start_pos" transfer-ownership="none">
            <doc xml:whitespace="preserve">start position</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="end_pos" transfer-ownership="none">
            <doc xml:whitespace="preserve">end position</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="cut_text" invoker="cut_text">
        <doc xml:whitespace="preserve">Copy text from @start_pos up to, but not including @end_pos
to the clipboard and then delete from the widget.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="start_pos" transfer-ownership="none">
            <doc xml:whitespace="preserve">start position</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="end_pos" transfer-ownership="none">
            <doc xml:whitespace="preserve">end position</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="delete_text" invoker="delete_text">
        <doc xml:whitespace="preserve">Delete text @start_pos up to, but not including @end_pos.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="start_pos" transfer-ownership="none">
            <doc xml:whitespace="preserve">start position</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="end_pos" transfer-ownership="none">
            <doc xml:whitespace="preserve">end position</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="insert_text" invoker="insert_text">
        <doc xml:whitespace="preserve">Insert text at a given position.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="string" transfer-ownership="none">
            <doc xml:whitespace="preserve">the text to insert</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:whitespace="preserve">the length of text to insert, in bytes</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="position" transfer-ownership="none">
            <doc xml:whitespace="preserve">The caller initializes this to the position at which to insert the text. After the call it points at the position after the newly inserted text.</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="paste_text" invoker="paste_text">
        <doc xml:whitespace="preserve">Paste text from clipboard to specified @position.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="position" transfer-ownership="none">
            <doc xml:whitespace="preserve">position to paste</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_run_attributes" invoker="set_run_attributes">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="attrib_set" transfer-ownership="none">
            <type name="AttributeSet" c:type="AtkAttributeSet*"/>
          </parameter>
          <parameter name="start_offset" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="end_offset" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_text_contents" invoker="set_text_contents">
        <doc xml:whitespace="preserve">Set text contents of @text.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="string" transfer-ownership="none">
            <doc xml:whitespace="preserve">string to set for text contents of @text</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="copy_text" c:identifier="atk_editable_text_copy_text">
        <doc xml:whitespace="preserve">Copy text from @start_pos up to, but not including @end_pos 
to the clipboard.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="start_pos" transfer-ownership="none">
            <doc xml:whitespace="preserve">start position</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="end_pos" transfer-ownership="none">
            <doc xml:whitespace="preserve">end position</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="cut_text" c:identifier="atk_editable_text_cut_text">
        <doc xml:whitespace="preserve">Copy text from @start_pos up to, but not including @end_pos
to the clipboard and then delete from the widget.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="start_pos" transfer-ownership="none">
            <doc xml:whitespace="preserve">start position</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="end_pos" transfer-ownership="none">
            <doc xml:whitespace="preserve">end position</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="delete_text" c:identifier="atk_editable_text_delete_text">
        <doc xml:whitespace="preserve">Delete text @start_pos up to, but not including @end_pos.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="start_pos" transfer-ownership="none">
            <doc xml:whitespace="preserve">start position</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="end_pos" transfer-ownership="none">
            <doc xml:whitespace="preserve">end position</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="insert_text" c:identifier="atk_editable_text_insert_text">
        <doc xml:whitespace="preserve">Insert text at a given position.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="string" transfer-ownership="none">
            <doc xml:whitespace="preserve">the text to insert</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:whitespace="preserve">the length of text to insert, in bytes</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="position" transfer-ownership="none">
            <doc xml:whitespace="preserve">The caller initializes this to the position at which to insert the text. After the call it points at the position after the newly inserted text.</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="paste_text" c:identifier="atk_editable_text_paste_text">
        <doc xml:whitespace="preserve">Paste text from clipboard to specified @position.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="position" transfer-ownership="none">
            <doc xml:whitespace="preserve">position to paste</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_run_attributes"
              c:identifier="atk_editable_text_set_run_attributes">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="attrib_set" transfer-ownership="none">
            <type name="AttributeSet" c:type="AtkAttributeSet*"/>
          </parameter>
          <parameter name="start_offset" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="end_offset" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_text_contents"
              c:identifier="atk_editable_text_set_text_contents">
        <doc xml:whitespace="preserve">Set text contents of @text.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="string" transfer-ownership="none">
            <doc xml:whitespace="preserve">string to set for text contents of @text</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
    </interface>
    <record name="EditableTextIface"
            c:type="AtkEditableTextIface"
            glib:is-gtype-struct-for="EditableText">
      <field name="parent_interface">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="set_run_attributes">
        <callback name="set_run_attributes">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="text" transfer-ownership="none">
              <type name="EditableText" c:type="AtkEditableText*"/>
            </parameter>
            <parameter name="attrib_set" transfer-ownership="none">
              <type name="AttributeSet" c:type="AtkAttributeSet*"/>
            </parameter>
            <parameter name="start_offset" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="end_offset" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_text_contents">
        <callback name="set_text_contents">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="text" transfer-ownership="none">
              <type name="EditableText" c:type="AtkEditableText*"/>
            </parameter>
            <parameter name="string" transfer-ownership="none">
              <doc xml:whitespace="preserve">string to set for text contents of @text</doc>
              <type name="utf8" c:type="gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="insert_text">
        <callback name="insert_text">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="text" transfer-ownership="none">
              <type name="EditableText" c:type="AtkEditableText*"/>
            </parameter>
            <parameter name="string" transfer-ownership="none">
              <doc xml:whitespace="preserve">the text to insert</doc>
              <type name="utf8" c:type="gchar*"/>
            </parameter>
            <parameter name="length" transfer-ownership="none">
              <doc xml:whitespace="preserve">the length of text to insert, in bytes</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="position" transfer-ownership="none">
              <doc xml:whitespace="preserve">The caller initializes this to the position at which to insert the text. After the call it points at the position after the newly inserted text.</doc>
              <type name="gint" c:type="gint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="copy_text">
        <callback name="copy_text">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="text" transfer-ownership="none">
              <type name="EditableText" c:type="AtkEditableText*"/>
            </parameter>
            <parameter name="start_pos" transfer-ownership="none">
              <doc xml:whitespace="preserve">start position</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="end_pos" transfer-ownership="none">
              <doc xml:whitespace="preserve">end position</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="cut_text">
        <callback name="cut_text">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="text" transfer-ownership="none">
              <type name="EditableText" c:type="AtkEditableText*"/>
            </parameter>
            <parameter name="start_pos" transfer-ownership="none">
              <doc xml:whitespace="preserve">start position</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="end_pos" transfer-ownership="none">
              <doc xml:whitespace="preserve">end position</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="delete_text">
        <callback name="delete_text">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="text" transfer-ownership="none">
              <type name="EditableText" c:type="AtkEditableText*"/>
            </parameter>
            <parameter name="start_pos" transfer-ownership="none">
              <doc xml:whitespace="preserve">start position</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="end_pos" transfer-ownership="none">
              <doc xml:whitespace="preserve">end position</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="paste_text">
        <callback name="paste_text">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="text" transfer-ownership="none">
              <type name="EditableText" c:type="AtkEditableText*"/>
            </parameter>
            <parameter name="position" transfer-ownership="none">
              <doc xml:whitespace="preserve">position to paste</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="pad1">
        <type name="Function" c:type="AtkFunction"/>
      </field>
      <field name="pad2">
        <type name="Function" c:type="AtkFunction"/>
      </field>
    </record>
    <callback name="EventListener" c:type="AtkEventListener">
      <doc xml:whitespace="preserve">A function which is called when an object emits a matching event,
as used in #atk_add_focus_tracker.
Currently the only events for which object-specific handlers are
supported are events of type "focus:".  Most clients of ATK will prefer to 
attach signal handlers for the various ATK signals instead.

see atk_add_focus_tracker.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="obj" transfer-ownership="none">
          <doc xml:whitespace="preserve">An #AtkObject instance for whom the callback will be called when the specified event (e.g. 'focus:') takes place.</doc>
          <type name="Object" c:type="AtkObject*"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="EventListenerInit" c:type="AtkEventListenerInit">
      <doc xml:whitespace="preserve">An #AtkEventListenerInit function is a special function that is
called in order to initialize the per-object event registration system
used by #AtkEventListener, if any preparation is required.  

see atk_focus_tracker_init.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </callback>
    <callback name="FocusHandler" c:type="AtkFocusHandler">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter transfer-ownership="none">
          <type name="Object" c:type="AtkObject*"/>
        </parameter>
        <parameter transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="Function" c:type="AtkFunction">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="data" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <class name="GObjectAccessible"
           c:symbol-prefix="gobject_accessible"
           c:type="AtkGObjectAccessible"
           parent="Object"
           glib:type-name="AtkGObjectAccessible"
           glib:get-type="atk_gobject_accessible_get_type"
           glib:type-struct="GObjectAccessibleClass">
      <function name="for_object"
                c:identifier="atk_gobject_accessible_for_object">
        <doc xml:whitespace="preserve">Gets the accessible object for the specified @obj.

the @obj</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #AtkObject which is the accessible object for</doc>
          <type name="Object" c:type="AtkObject*"/>
        </return-value>
        <parameters>
          <parameter name="obj" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #GObject</doc>
            <type name="GObject.Object" c:type="GObject*"/>
          </parameter>
        </parameters>
      </function>
      <method name="get_object"
              c:identifier="atk_gobject_accessible_get_object">
        <doc xml:whitespace="preserve">Gets the GObject for which @obj is the accessible object.

the accessible object</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #GObject which is the object for which @obj is</doc>
          <type name="GObject.Object" c:type="GObject*"/>
        </return-value>
      </method>
      <field name="parent">
        <type name="Object" c:type="AtkObject"/>
      </field>
    </class>
    <record name="GObjectAccessibleClass"
            c:type="AtkGObjectAccessibleClass"
            glib:is-gtype-struct-for="GObjectAccessible">
      <field name="parent_class">
        <type name="ObjectClass" c:type="AtkObjectClass"/>
      </field>
      <field name="pad1">
        <type name="Function" c:type="AtkFunction"/>
      </field>
      <field name="pad2">
        <type name="Function" c:type="AtkFunction"/>
      </field>
    </record>
    <class name="Hyperlink"
           c:symbol-prefix="hyperlink"
           c:type="AtkHyperlink"
           parent="GObject.Object"
           glib:type-name="AtkHyperlink"
           glib:get-type="atk_hyperlink_get_type"
           glib:type-struct="HyperlinkClass">
      <implements name="Action"/>
      <virtual-method name="get_end_index" invoker="get_end_index">
        <doc xml:whitespace="preserve">Gets the index with the hypertext document at which this link ends.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the index with the hypertext document at which this link ends</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </virtual-method>
      <virtual-method name="get_n_anchors" invoker="get_n_anchors">
        <doc xml:whitespace="preserve">Gets the number of anchors associated with this hyperlink.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the number of anchors associated with this hyperlink</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </virtual-method>
      <virtual-method name="get_object" invoker="get_object">
        <doc xml:whitespace="preserve">Returns the item associated with this hyperlinks nth anchor.
For instance, the returned #AtkObject will implement #AtkText
if @link_ is a text hyperlink, #AtkImage if @link_ is an image
hyperlink etc. 

Multiple anchors are primarily used by client-side image maps.

i-th anchor</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an #AtkObject associated with this hyperlinks</doc>
          <type name="Object" c:type="AtkObject*"/>
        </return-value>
        <parameters>
          <parameter name="i" transfer-ownership="none">
            <doc xml:whitespace="preserve">a (zero-index) integer specifying the desired anchor</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_start_index" invoker="get_start_index">
        <doc xml:whitespace="preserve">Gets the index with the hypertext document at which this link begins.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the index with the hypertext document at which this link begins</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </virtual-method>
      <virtual-method name="get_uri" invoker="get_uri">
        <doc xml:whitespace="preserve">Get a the URI associated with the anchor specified 
by @i of @link_. 

Multiple anchors are primarily used by client-side image maps.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a string specifying the URI</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="i" transfer-ownership="none">
            <doc xml:whitespace="preserve">a (zero-index) integer specifying the desired anchor</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="is_selected_link">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </virtual-method>
      <virtual-method name="is_valid" invoker="is_valid">
        <doc xml:whitespace="preserve">Since the document that a link is associated with may have changed
this method returns %TRUE if the link is still valid (with
respect to the document it references) and %FALSE otherwise.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">whether or not this link is still valid</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </virtual-method>
      <virtual-method name="link_activated">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </virtual-method>
      <virtual-method name="link_state">
        <return-value transfer-ownership="none">
          <type name="guint" c:type="guint"/>
        </return-value>
      </virtual-method>
      <method name="get_end_index" c:identifier="atk_hyperlink_get_end_index">
        <doc xml:whitespace="preserve">Gets the index with the hypertext document at which this link ends.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the index with the hypertext document at which this link ends</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </method>
      <method name="get_n_anchors" c:identifier="atk_hyperlink_get_n_anchors">
        <doc xml:whitespace="preserve">Gets the number of anchors associated with this hyperlink.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the number of anchors associated with this hyperlink</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </method>
      <method name="get_object" c:identifier="atk_hyperlink_get_object">
        <doc xml:whitespace="preserve">Returns the item associated with this hyperlinks nth anchor.
For instance, the returned #AtkObject will implement #AtkText
if @link_ is a text hyperlink, #AtkImage if @link_ is an image
hyperlink etc. 

Multiple anchors are primarily used by client-side image maps.

i-th anchor</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an #AtkObject associated with this hyperlinks</doc>
          <type name="Object" c:type="AtkObject*"/>
        </return-value>
        <parameters>
          <parameter name="i" transfer-ownership="none">
            <doc xml:whitespace="preserve">a (zero-index) integer specifying the desired anchor</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_start_index"
              c:identifier="atk_hyperlink_get_start_index">
        <doc xml:whitespace="preserve">Gets the index with the hypertext document at which this link begins.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the index with the hypertext document at which this link begins</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </method>
      <method name="get_uri" c:identifier="atk_hyperlink_get_uri">
        <doc xml:whitespace="preserve">Get a the URI associated with the anchor specified 
by @i of @link_. 

Multiple anchors are primarily used by client-side image maps.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a string specifying the URI</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="i" transfer-ownership="none">
            <doc xml:whitespace="preserve">a (zero-index) integer specifying the desired anchor</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_inline" c:identifier="atk_hyperlink_is_inline">
        <doc xml:whitespace="preserve">Indicates whether the link currently displays some or all of its
content inline.  Ordinary HTML links will usually return
%FALSE, but an inline &amp;lt;src&amp;gt; HTML element will return
%TRUE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">whether or not this link displays its content inline.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="is_valid" c:identifier="atk_hyperlink_is_valid">
        <doc xml:whitespace="preserve">Since the document that a link is associated with may have changed
this method returns %TRUE if the link is still valid (with
respect to the document it references) and %FALSE otherwise.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">whether or not this link is still valid</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </method>
      <property name="end-index" transfer-ownership="none">
        <type name="gint"/>
      </property>
      <property name="number-of-anchors" transfer-ownership="none">
        <type name="gint"/>
      </property>
      <property name="selected-link" transfer-ownership="none">
        <type name="gboolean"/>
      </property>
      <property name="start-index" transfer-ownership="none">
        <type name="gint"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <glib:signal name="link-activated" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="HyperlinkClass"
            c:type="AtkHyperlinkClass"
            glib:is-gtype-struct-for="Hyperlink">
      <field name="parent">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="get_uri">
        <callback name="get_uri">
          <return-value transfer-ownership="full">
            <doc xml:whitespace="preserve">a string specifying the URI</doc>
            <type name="utf8" c:type="gchar*"/>
          </return-value>
          <parameters>
            <parameter name="link_" transfer-ownership="none">
              <type name="Hyperlink" c:type="AtkHyperlink*"/>
            </parameter>
            <parameter name="i" transfer-ownership="none">
              <doc xml:whitespace="preserve">a (zero-index) integer specifying the desired anchor</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_object">
        <callback name="get_object">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtkObject associated with this hyperlinks</doc>
            <type name="Object" c:type="AtkObject*"/>
          </return-value>
          <parameters>
            <parameter name="link_" transfer-ownership="none">
              <type name="Hyperlink" c:type="AtkHyperlink*"/>
            </parameter>
            <parameter name="i" transfer-ownership="none">
              <doc xml:whitespace="preserve">a (zero-index) integer specifying the desired anchor</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_end_index">
        <callback name="get_end_index">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">the index with the hypertext document at which this link ends</doc>
            <type name="gint" c:type="gint"/>
          </return-value>
          <parameters>
            <parameter name="link_" transfer-ownership="none">
              <type name="Hyperlink" c:type="AtkHyperlink*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_start_index">
        <callback name="get_start_index">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">the index with the hypertext document at which this link begins</doc>
            <type name="gint" c:type="gint"/>
          </return-value>
          <parameters>
            <parameter name="link_" transfer-ownership="none">
              <type name="Hyperlink" c:type="AtkHyperlink*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="is_valid">
        <callback name="is_valid">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">whether or not this link is still valid</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="link_" transfer-ownership="none">
              <type name="Hyperlink" c:type="AtkHyperlink*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_n_anchors">
        <callback name="get_n_anchors">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">the number of anchors associated with this hyperlink</doc>
            <type name="gint" c:type="gint"/>
          </return-value>
          <parameters>
            <parameter name="link_" transfer-ownership="none">
              <type name="Hyperlink" c:type="AtkHyperlink*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="link_state">
        <callback name="link_state">
          <return-value transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </return-value>
          <parameters>
            <parameter name="link_" transfer-ownership="none">
              <type name="Hyperlink" c:type="AtkHyperlink*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="is_selected_link">
        <callback name="is_selected_link">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="link_" transfer-ownership="none">
              <type name="Hyperlink" c:type="AtkHyperlink*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="link_activated">
        <callback name="link_activated">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="link_" transfer-ownership="none">
              <type name="Hyperlink" c:type="AtkHyperlink*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="pad1">
        <type name="Function" c:type="AtkFunction"/>
      </field>
    </record>
    <interface name="HyperlinkImpl"
               c:symbol-prefix="hyperlink_impl"
               c:type="AtkHyperlinkImpl"
               glib:type-name="AtkHyperlinkImpl"
               glib:get-type="atk_hyperlink_impl_get_type"
               glib:type-struct="HyperlinkImplIface">
      <virtual-method name="get_hyperlink"
                      invoker="get_hyperlink"
                      version="1.12">
        <doc xml:whitespace="preserve">Gets the hyperlink associated with this object.

implementing AtkObject.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an AtkHyperlink object which points to this</doc>
          <type name="Hyperlink" c:type="AtkHyperlink*"/>
        </return-value>
      </virtual-method>
      <method name="get_hyperlink"
              c:identifier="atk_hyperlink_impl_get_hyperlink"
              version="1.12">
        <doc xml:whitespace="preserve">Gets the hyperlink associated with this object.

implementing AtkObject.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an AtkHyperlink object which points to this</doc>
          <type name="Hyperlink" c:type="AtkHyperlink*"/>
        </return-value>
      </method>
    </interface>
    <record name="HyperlinkImplIface"
            c:type="AtkHyperlinkImplIface"
            glib:is-gtype-struct-for="HyperlinkImpl">
      <field name="parent">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="get_hyperlink">
        <callback name="get_hyperlink">
          <return-value transfer-ownership="full">
            <doc xml:whitespace="preserve">an AtkHyperlink object which points to this</doc>
            <type name="Hyperlink" c:type="AtkHyperlink*"/>
          </return-value>
          <parameters>
            <parameter name="impl" transfer-ownership="none">
              <type name="HyperlinkImpl" c:type="AtkHyperlinkImpl*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="pad1">
        <type name="Function" c:type="AtkFunction"/>
      </field>
    </record>
    <bitfield name="HyperlinkStateFlags"
              glib:type-name="AtkHyperlinkStateFlags"
              glib:get-type="atk_hyperlink_state_flags_get_type"
              c:type="AtkHyperlinkStateFlags">
      <member name="inline"
              value="1"
              c:identifier="ATK_HYPERLINK_IS_INLINE"
              glib:nick="inline"/>
    </bitfield>
    <interface name="Hypertext"
               c:symbol-prefix="hypertext"
               c:type="AtkHypertext"
               glib:type-name="AtkHypertext"
               glib:get-type="atk_hypertext_get_type"
               glib:type-struct="HypertextIface">
      <virtual-method name="get_link" invoker="get_link">
        <doc xml:whitespace="preserve">Gets the link in this hypertext document at index 
@link_index

index @link_index</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the link in this hypertext document at</doc>
          <type name="Hyperlink" c:type="AtkHyperlink*"/>
        </return-value>
        <parameters>
          <parameter name="link_index" transfer-ownership="none">
            <doc xml:whitespace="preserve">an integer specifying the desired link</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_link_index" invoker="get_link_index">
        <doc xml:whitespace="preserve">Gets the index into the array of hyperlinks that is associated with
the character specified by @char_index.

or -1 if there is no hyperlink associated with this character.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an index into the array of hyperlinks in @hypertext,</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="char_index" transfer-ownership="none">
            <doc xml:whitespace="preserve">a character index</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_n_links" invoker="get_n_links">
        <doc xml:whitespace="preserve">Gets the number of links within this hypertext document.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the number of links within this hypertext document</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </virtual-method>
      <virtual-method name="link_selected">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="link_index" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_link" c:identifier="atk_hypertext_get_link">
        <doc xml:whitespace="preserve">Gets the link in this hypertext document at index 
@link_index

index @link_index</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the link in this hypertext document at</doc>
          <type name="Hyperlink" c:type="AtkHyperlink*"/>
        </return-value>
        <parameters>
          <parameter name="link_index" transfer-ownership="none">
            <doc xml:whitespace="preserve">an integer specifying the desired link</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_link_index"
              c:identifier="atk_hypertext_get_link_index">
        <doc xml:whitespace="preserve">Gets the index into the array of hyperlinks that is associated with
the character specified by @char_index.

or -1 if there is no hyperlink associated with this character.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an index into the array of hyperlinks in @hypertext,</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="char_index" transfer-ownership="none">
            <doc xml:whitespace="preserve">a character index</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_n_links" c:identifier="atk_hypertext_get_n_links">
        <doc xml:whitespace="preserve">Gets the number of links within this hypertext document.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the number of links within this hypertext document</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </method>
      <glib:signal name="link-selected" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
    </interface>
    <record name="HypertextIface"
            c:type="AtkHypertextIface"
            glib:is-gtype-struct-for="Hypertext">
      <field name="parent">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="get_link">
        <callback name="get_link">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">the link in this hypertext document at</doc>
            <type name="Hyperlink" c:type="AtkHyperlink*"/>
          </return-value>
          <parameters>
            <parameter name="hypertext" transfer-ownership="none">
              <type name="Hypertext" c:type="AtkHypertext*"/>
            </parameter>
            <parameter name="link_index" transfer-ownership="none">
              <doc xml:whitespace="preserve">an integer specifying the desired link</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_n_links">
        <callback name="get_n_links">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">the number of links within this hypertext document</doc>
            <type name="gint" c:type="gint"/>
          </return-value>
          <parameters>
            <parameter name="hypertext" transfer-ownership="none">
              <type name="Hypertext" c:type="AtkHypertext*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_link_index">
        <callback name="get_link_index">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">an index into the array of hyperlinks in @hypertext,</doc>
            <type name="gint" c:type="gint"/>
          </return-value>
          <parameters>
            <parameter name="hypertext" transfer-ownership="none">
              <type name="Hypertext" c:type="AtkHypertext*"/>
            </parameter>
            <parameter name="char_index" transfer-ownership="none">
              <doc xml:whitespace="preserve">a character index</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="link_selected">
        <callback name="link_selected">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="hypertext" transfer-ownership="none">
              <type name="Hypertext" c:type="AtkHypertext*"/>
            </parameter>
            <parameter name="link_index" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="pad1">
        <type name="Function" c:type="AtkFunction"/>
      </field>
      <field name="pad2">
        <type name="Function" c:type="AtkFunction"/>
      </field>
      <field name="pad3">
        <type name="Function" c:type="AtkFunction"/>
      </field>
    </record>
    <interface name="Image"
               c:symbol-prefix="image"
               c:type="AtkImage"
               glib:type-name="AtkImage"
               glib:get-type="atk_image_get_type"
               glib:type-struct="ImageIface">
      <virtual-method name="get_image_description"
                      invoker="get_image_description">
        <doc xml:whitespace="preserve">Get a textual description of this image.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a string representing the image description</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </virtual-method>
      <virtual-method name="get_image_locale" invoker="get_image_locale">
        <doc xml:whitespace="preserve">Since ATK 1.12

Returns a string corresponding to the POSIX LC_MESSAGES locale used by the image description, or NULL if the image does not specify a locale.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </virtual-method>
      <virtual-method name="get_image_position" invoker="get_image_position">
        <doc xml:whitespace="preserve">Gets the position of the image in the form of a point specifying the
images top-left corner.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="x" transfer-ownership="none">
            <doc xml:whitespace="preserve">address of #gint to put x coordinate position; otherwise, -1 if value cannot be obtained.</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:whitespace="preserve">address of #gint to put y coordinate position; otherwise, -1 if value cannot be obtained.</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="coord_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
            <type name="CoordType" c:type="AtkCoordType"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_image_size" invoker="get_image_size">
        <doc xml:whitespace="preserve">Get the width and height in pixels for the specified image.
The values of @width and @height are returned as -1 if the
values cannot be obtained (for instance, if the object is not onscreen).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="width" transfer-ownership="none">
            <doc xml:whitespace="preserve">filled with the image width, or -1 if the value cannot be obtained.</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:whitespace="preserve">filled with the image height, or -1 if the value cannot be obtained.</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_image_description"
                      invoker="set_image_description">
        <doc xml:whitespace="preserve">Sets the textual description for this image.

not be completed.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">boolean TRUE, or FALSE if operation could</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="description" transfer-ownership="none">
            <doc xml:whitespace="preserve">a string description to set for @image</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_image_description"
              c:identifier="atk_image_get_image_description">
        <doc xml:whitespace="preserve">Get a textual description of this image.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a string representing the image description</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_image_locale"
              c:identifier="atk_image_get_image_locale">
        <doc xml:whitespace="preserve">Since ATK 1.12

Returns a string corresponding to the POSIX LC_MESSAGES locale used by the image description, or NULL if the image does not specify a locale.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_image_position"
              c:identifier="atk_image_get_image_position">
        <doc xml:whitespace="preserve">Gets the position of the image in the form of a point specifying the
images top-left corner.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="x" transfer-ownership="none">
            <doc xml:whitespace="preserve">address of #gint to put x coordinate position; otherwise, -1 if value cannot be obtained.</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:whitespace="preserve">address of #gint to put y coordinate position; otherwise, -1 if value cannot be obtained.</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="coord_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
            <type name="CoordType" c:type="AtkCoordType"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_image_size" c:identifier="atk_image_get_image_size">
        <doc xml:whitespace="preserve">Get the width and height in pixels for the specified image.
The values of @width and @height are returned as -1 if the
values cannot be obtained (for instance, if the object is not onscreen).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="width" transfer-ownership="none">
            <doc xml:whitespace="preserve">filled with the image width, or -1 if the value cannot be obtained.</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:whitespace="preserve">filled with the image height, or -1 if the value cannot be obtained.</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_image_description"
              c:identifier="atk_image_set_image_description">
        <doc xml:whitespace="preserve">Sets the textual description for this image.

not be completed.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">boolean TRUE, or FALSE if operation could</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="description" transfer-ownership="none">
            <doc xml:whitespace="preserve">a string description to set for @image</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
    </interface>
    <record name="ImageIface"
            c:type="AtkImageIface"
            glib:is-gtype-struct-for="Image">
      <field name="parent">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="get_image_position">
        <callback name="get_image_position">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="image" transfer-ownership="none">
              <type name="Image" c:type="AtkImage*"/>
            </parameter>
            <parameter name="x" transfer-ownership="none">
              <doc xml:whitespace="preserve">address of #gint to put x coordinate position; otherwise, -1 if value cannot be obtained.</doc>
              <type name="gint" c:type="gint*"/>
            </parameter>
            <parameter name="y" transfer-ownership="none">
              <doc xml:whitespace="preserve">address of #gint to put y coordinate position; otherwise, -1 if value cannot be obtained.</doc>
              <type name="gint" c:type="gint*"/>
            </parameter>
            <parameter name="coord_type" transfer-ownership="none">
              <doc xml:whitespace="preserve">specifies whether the coordinates are relative to the screen or to the components top level window</doc>
              <type name="CoordType" c:type="AtkCoordType"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_image_description">
        <callback name="get_image_description">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">a string representing the image description</doc>
            <type name="utf8" c:type="gchar*"/>
          </return-value>
          <parameters>
            <parameter name="image" transfer-ownership="none">
              <type name="Image" c:type="AtkImage*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_image_size">
        <callback name="get_image_size">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="image" transfer-ownership="none">
              <type name="Image" c:type="AtkImage*"/>
            </parameter>
            <parameter name="width" transfer-ownership="none">
              <doc xml:whitespace="preserve">filled with the image width, or -1 if the value cannot be obtained.</doc>
              <type name="gint" c:type="gint*"/>
            </parameter>
            <parameter name="height" transfer-ownership="none">
              <doc xml:whitespace="preserve">filled with the image height, or -1 if the value cannot be obtained.</doc>
              <type name="gint" c:type="gint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_image_description">
        <callback name="set_image_description">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">boolean TRUE, or FALSE if operation could</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="image" transfer-ownership="none">
              <type name="Image" c:type="AtkImage*"/>
            </parameter>
            <parameter name="description" transfer-ownership="none">
              <doc xml:whitespace="preserve">a string description to set for @image</doc>
              <type name="utf8" c:type="gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_image_locale">
        <callback name="get_image_locale">
          <return-value transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </return-value>
          <parameters>
            <parameter name="image" transfer-ownership="none">
              <type name="Image" c:type="AtkImage*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="pad1">
        <type name="Function" c:type="AtkFunction"/>
      </field>
    </record>
    <record name="Implementor" c:type="AtkImplementor" disguised="1">
      <method name="ref_accessible"
              c:identifier="atk_implementor_ref_accessible">
        <doc xml:whitespace="preserve">Gets a reference to an object's #AtkObject implementation, if
the object implements #AtkObjectIface

implementation</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a reference to an object's #AtkObject</doc>
          <type name="Object" c:type="AtkObject*"/>
        </return-value>
      </method>
    </record>
    <interface name="ImplementorIface"
               c:symbol-prefix="implementor"
               c:type="AtkImplementorIface"
               glib:type-name="AtkImplementorIface"
               glib:get-type="atk_implementor_get_type">
    </interface>
    <record name="KeyEventStruct" c:type="AtkKeyEventStruct">
      <doc xml:whitespace="preserve">Encapsulates information about a key event.</doc>
      <field name="type" writable="1">
        <type name="gint" c:type="gint"/>
      </field>
      <field name="state" writable="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="keyval" writable="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="length" writable="1">
        <type name="gint" c:type="gint"/>
      </field>
      <field name="string" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="keycode" writable="1">
        <type name="guint16" c:type="guint16"/>
      </field>
      <field name="timestamp" writable="1">
        <type name="guint32" c:type="guint32"/>
      </field>
    </record>
    <enumeration name="KeyEventType"
                 glib:type-name="AtkKeyEventType"
                 glib:get-type="atk_key_event_type_get_type"
                 c:type="AtkKeyEventType">
      <member name="press"
              value="0"
              c:identifier="ATK_KEY_EVENT_PRESS"
              glib:nick="press"/>
      <member name="release"
              value="1"
              c:identifier="ATK_KEY_EVENT_RELEASE"
              glib:nick="release"/>
      <member name="last_defined"
              value="2"
              c:identifier="ATK_KEY_EVENT_LAST_DEFINED"
              glib:nick="last-defined"/>
    </enumeration>
    <callback name="KeySnoopFunc" c:type="AtkKeySnoopFunc">
      <doc xml:whitespace="preserve">An #AtkKeySnoopFunc is a type of callback which is called whenever a key event occurs, 
if registered via atk_add_key_event_listener.  It allows for pre-emptive 
interception of key events via the return code as described below.

discarded without being passed to the normal GUI recipient; FALSE (zero) if the 
event dispatch to the client application should proceed as normal.

see atk_add_key_event_listener.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">TRUE (nonzero) if the event emission should be stopped and the event</doc>
        <type name="gint" c:type="gint"/>
      </return-value>
      <parameters>
        <parameter name="event" transfer-ownership="none">
          <doc xml:whitespace="preserve">an AtkKeyEventStruct containing information about the key event for which notification is being given.</doc>
          <type name="KeyEventStruct" c:type="AtkKeyEventStruct*"/>
        </parameter>
        <parameter name="func_data" transfer-ownership="none">
          <doc xml:whitespace="preserve">a block of data which will be passed to the event listener, on notification.</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <enumeration name="Layer"
                 glib:type-name="AtkLayer"
                 glib:get-type="atk_layer_get_type"
                 c:type="AtkLayer">
      <member name="invalid"
              value="0"
              c:identifier="ATK_LAYER_INVALID"
              glib:nick="invalid"/>
      <member name="background"
              value="1"
              c:identifier="ATK_LAYER_BACKGROUND"
              glib:nick="background"/>
      <member name="canvas"
              value="2"
              c:identifier="ATK_LAYER_CANVAS"
              glib:nick="canvas"/>
      <member name="widget"
              value="3"
              c:identifier="ATK_LAYER_WIDGET"
              glib:nick="widget"/>
      <member name="mdi"
              value="4"
              c:identifier="ATK_LAYER_MDI"
              glib:nick="mdi"/>
      <member name="popup"
              value="5"
              c:identifier="ATK_LAYER_POPUP"
              glib:nick="popup"/>
      <member name="overlay"
              value="6"
              c:identifier="ATK_LAYER_OVERLAY"
              glib:nick="overlay"/>
      <member name="window"
              value="7"
              c:identifier="ATK_LAYER_WINDOW"
              glib:nick="window"/>
    </enumeration>
    <class name="Misc"
           c:symbol-prefix="misc"
           c:type="AtkMisc"
           parent="GObject.Object"
           glib:type-name="AtkMisc"
           glib:get-type="atk_misc_get_type"
           glib:type-struct="MiscClass">
      <function name="get_instance"
                c:identifier="atk_misc_get_instance"
                version="1.13">
        <doc xml:whitespace="preserve">Obtain the singleton instance of AtkMisc for this application.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">The singleton instance of AtkMisc for this application.</doc>
          <type name="Misc" c:type="AtkMisc*"/>
        </return-value>
      </function>
      <virtual-method name="threads_enter"
                      invoker="threads_enter"
                      version="1.13">
        <doc xml:whitespace="preserve">Take the thread mutex for the GUI toolkit, 
if one exists. 
(This method is implemented by the toolkit ATK implementation layer;
for instance, for GTK+, GAIL implements this via GDK_THREADS_ENTER).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </virtual-method>
      <virtual-method name="threads_leave"
                      invoker="threads_leave"
                      version="1.13">
        <doc xml:whitespace="preserve">Release the thread mutex for the GUI toolkit, 
if one exists. This method, and atk_misc_threads_enter, 
are needed in some situations by threaded application code which 
services ATK requests, since fulfilling ATK requests often
requires calling into the GUI toolkit.  If a long-running or
potentially blocking call takes place inside such a block, it should
be bracketed by atk_misc_threads_leave/atk_misc_threads_enter calls.
(This method is implemented by the toolkit ATK implementation layer;
for instance, for GTK+, GAIL implements this via GDK_THREADS_LEAVE).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </virtual-method>
      <method name="threads_enter"
              c:identifier="atk_misc_threads_enter"
              version="1.13">
        <doc xml:whitespace="preserve">Take the thread mutex for the GUI toolkit, 
if one exists. 
(This method is implemented by the toolkit ATK implementation layer;
for instance, for GTK+, GAIL implements this via GDK_THREADS_ENTER).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <method name="threads_leave"
              c:identifier="atk_misc_threads_leave"
              version="1.13">
        <doc xml:whitespace="preserve">Release the thread mutex for the GUI toolkit, 
if one exists. This method, and atk_misc_threads_enter, 
are needed in some situations by threaded application code which 
services ATK requests, since fulfilling ATK requests often
requires calling into the GUI toolkit.  If a long-running or
potentially blocking call takes place inside such a block, it should
be bracketed by atk_misc_threads_leave/atk_misc_threads_enter calls.
(This method is implemented by the toolkit ATK implementation layer;
for instance, for GTK+, GAIL implements this via GDK_THREADS_LEAVE).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="MiscClass"
            c:type="AtkMiscClass"
            glib:is-gtype-struct-for="Misc">
      <field name="parent">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="threads_enter">
        <callback name="threads_enter">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="misc" transfer-ownership="none">
              <type name="Misc" c:type="AtkMisc*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="threads_leave">
        <callback name="threads_leave">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="misc" transfer-ownership="none">
              <type name="Misc" c:type="AtkMisc*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="vfuncs">
        <array zero-terminated="0" c:type="gpointer" fixed-size="32">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <class name="NoOpObject"
           c:symbol-prefix="no_op_object"
           c:type="AtkNoOpObject"
           parent="Object"
           glib:type-name="AtkNoOpObject"
           glib:get-type="atk_no_op_object_get_type"
           glib:type-struct="NoOpObjectClass">
      <implements name="Action"/>
      <implements name="Component"/>
      <implements name="Document"/>
      <implements name="EditableText"/>
      <implements name="Hypertext"/>
      <implements name="Image"/>
      <implements name="Selection"/>
      <implements name="Table"/>
      <implements name="Text"/>
      <implements name="Value"/>
      <implements name="Window"/>
      <constructor name="new" c:identifier="atk_no_op_object_new">
        <doc xml:whitespace="preserve">Provides a default (non-functioning stub) #AtkObject.
Application maintainers should not use this method.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a default (non-functioning stub) #AtkObject</doc>
          <type name="Object" c:type="AtkObject*"/>
        </return-value>
        <parameters>
          <parameter name="obj" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #GObject</doc>
            <type name="GObject.Object" c:type="GObject*"/>
          </parameter>
        </parameters>
      </constructor>
      <field name="parent">
        <type name="Object" c:type="AtkObject"/>
      </field>
    </class>
    <record name="NoOpObjectClass"
            c:type="AtkNoOpObjectClass"
            glib:is-gtype-struct-for="NoOpObject">
      <field name="parent_class">
        <type name="ObjectClass" c:type="AtkObjectClass"/>
      </field>
    </record>
    <class name="NoOpObjectFactory"
           c:symbol-prefix="no_op_object_factory"
           c:type="AtkNoOpObjectFactory"
           parent="ObjectFactory"
           glib:type-name="AtkNoOpObjectFactory"
           glib:get-type="atk_no_op_object_factory_get_type"
           glib:type-struct="NoOpObjectFactoryClass">
      <constructor name="new" c:identifier="atk_no_op_object_factory_new">
        <doc xml:whitespace="preserve">Creates an instance of an #AtkObjectFactory which generates primitive
(non-functioning) #AtkObjects.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an instance of an #AtkObjectFactory</doc>
          <type name="ObjectFactory" c:type="AtkObjectFactory*"/>
        </return-value>
      </constructor>
      <field name="parent">
        <type name="ObjectFactory" c:type="AtkObjectFactory"/>
      </field>
    </class>
    <record name="NoOpObjectFactoryClass"
            c:type="AtkNoOpObjectFactoryClass"
            glib:is-gtype-struct-for="NoOpObjectFactory">
      <field name="parent_class">
        <type name="ObjectFactoryClass" c:type="AtkObjectFactoryClass"/>
      </field>
    </record>
    <class name="Object"
           c:symbol-prefix="object"
           c:type="AtkObject"
           parent="GObject.Object"
           glib:type-name="AtkObject"
           glib:get-type="atk_object_get_type"
           glib:type-struct="ObjectClass">
      <virtual-method name="active_descendant_changed">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="child" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="children_changed">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="change_index" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="changed_child" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="connect_property_change_handler"
                      invoker="connect_property_change_handler"
                      introspectable="0">
        <doc xml:whitespace="preserve">Specifies a function to be called when a property changes value.

atk_object_remove_property_change_handler()</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #guint which is the handler id used in</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <parameter name="handler" transfer-ownership="none">
            <doc xml:whitespace="preserve">a function to be called when a property changes its value</doc>
            <type name="PropertyChangeHandler"
                  c:type="AtkPropertyChangeHandler*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="focus_event">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="focus_in" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_attributes"
                      invoker="get_attributes"
                      version="1.12">
        <doc xml:whitespace="preserve">Get a list of properties applied to this object as a whole, as an #AtkAttributeSet consisting of 
name-value pairs. As such these attributes may be considered weakly-typed properties or annotations, 
as distinct from strongly-typed object data available via other get/set methods.
Not all objects have explicit "name-value pair" #AtkAttributeSet properties.


properties/annotations applied to the object, or an empty set if the object
has no name-value pair attributes assigned to it.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an #AtkAttributeSet consisting of all explicit</doc>
          <type name="AttributeSet" c:type="AtkAttributeSet*"/>
        </return-value>
      </virtual-method>
      <virtual-method name="get_description" invoker="get_description">
        <doc xml:whitespace="preserve">Gets the accessible description of the accessible.

of the accessible.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a character string representing the accessible description</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </virtual-method>
      <virtual-method name="get_index_in_parent" invoker="get_index_in_parent">
        <doc xml:whitespace="preserve">Gets the 0-based index of this accessible in its parent; returns -1 if the
accessible does not have an accessible parent.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an integer which is the index of the accessible in its parent</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </virtual-method>
      <virtual-method name="get_layer">
        <return-value transfer-ownership="none">
          <type name="Layer" c:type="AtkLayer"/>
        </return-value>
      </virtual-method>
      <virtual-method name="get_mdi_zorder">
        <return-value transfer-ownership="none">
          <type name="gint" c:type="gint"/>
        </return-value>
      </virtual-method>
      <virtual-method name="get_n_children">
        <return-value transfer-ownership="none">
          <type name="gint" c:type="gint"/>
        </return-value>
      </virtual-method>
      <virtual-method name="get_name" invoker="get_name">
        <doc xml:whitespace="preserve">Gets the accessible name of the accessible.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a character string representing the accessible name of the object.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </virtual-method>
      <virtual-method name="get_parent" invoker="get_parent">
        <doc xml:whitespace="preserve">Gets the accessible parent of the accessible.

of the accessible</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #AtkObject representing the accessible parent</doc>
          <type name="Object" c:type="AtkObject*"/>
        </return-value>
      </virtual-method>
      <virtual-method name="get_role" invoker="get_role">
        <doc xml:whitespace="preserve">Gets the role of the accessible.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an #AtkRole which is the role of the accessible</doc>
          <type name="Role" c:type="AtkRole"/>
        </return-value>
      </virtual-method>
      <virtual-method name="initialize" invoker="initialize">
        <doc xml:whitespace="preserve">This function is called when implementing subclasses of #AtkObject.
It does initialization required for the new object. It is intended
that this function should called only in the ..._new() functions used
to create an instance of a subclass of #AtkObject</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="data" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gpointer which identifies the object for which the AtkObject was created.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="property_change" introspectable="0">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="values" transfer-ownership="none">
            <type c:type="AtkPropertyValues*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="ref_child" introspectable="0">
        <return-value>
          <type name="Object" c:type="AtkObject*"/>
        </return-value>
        <parameters>
          <parameter name="i" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="ref_relation_set" invoker="ref_relation_set">
        <doc xml:whitespace="preserve">Gets the #AtkRelationSet associated with the object.

of the object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtkRelationSet representing the relation set</doc>
          <type name="RelationSet" c:type="AtkRelationSet*"/>
        </return-value>
      </virtual-method>
      <virtual-method name="ref_state_set" invoker="ref_state_set">
        <doc xml:whitespace="preserve">Gets a reference to the state set of the accessible; the caller must
unreference it when it is no longer needed.

set of the accessible</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a reference to an #AtkStateSet which is the state</doc>
          <type name="StateSet" c:type="AtkStateSet*"/>
        </return-value>
      </virtual-method>
      <virtual-method name="remove_property_change_handler"
                      invoker="remove_property_change_handler">
        <doc xml:whitespace="preserve">Removes a property change handler.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="handler_id" transfer-ownership="none">
            <doc xml:whitespace="preserve">a guint which identifies the handler to be removed.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_description" invoker="set_description">
        <doc xml:whitespace="preserve">Sets the accessible description of the accessible.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="description" transfer-ownership="none">
            <doc xml:whitespace="preserve">a character string to be set as the accessible description</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_name" invoker="set_name">
        <doc xml:whitespace="preserve">Sets the accessible name of the accessible.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:whitespace="preserve">a character string to be set as the accessible name</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_parent" invoker="set_parent">
        <doc xml:whitespace="preserve">Sets the accessible parent of the accessible.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="parent" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtkObject to be set as the accessible parent</doc>
            <type name="Object" c:type="AtkObject*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_role" invoker="set_role">
        <doc xml:whitespace="preserve">Sets the role of the accessible.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="role" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtkRole to be set as the role</doc>
            <type name="Role" c:type="AtkRole"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="state_change">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="state_set" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="visible_data_changed">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </virtual-method>
      <method name="add_relationship"
              c:identifier="atk_object_add_relationship">
        <doc xml:whitespace="preserve">Adds a relationship of the specified type with the specified target.

Returns TRUE if the relationship is added.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="relationship" transfer-ownership="none">
            <doc xml:whitespace="preserve">The #AtkRelationType of the relation</doc>
            <type name="RelationType" c:type="AtkRelationType"/>
          </parameter>
          <parameter name="target" transfer-ownership="none">
            <doc xml:whitespace="preserve">The #AtkObject which is to be the target of the relation.</doc>
            <type name="Object" c:type="AtkObject*"/>
          </parameter>
        </parameters>
      </method>
      <method name="connect_property_change_handler"
              c:identifier="atk_object_connect_property_change_handler"
              introspectable="0">
        <doc xml:whitespace="preserve">Specifies a function to be called when a property changes value.

atk_object_remove_property_change_handler()</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #guint which is the handler id used in</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <parameter name="handler" transfer-ownership="none">
            <doc xml:whitespace="preserve">a function to be called when a property changes its value</doc>
            <type name="PropertyChangeHandler"
                  c:type="AtkPropertyChangeHandler*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_attributes"
              c:identifier="atk_object_get_attributes"
              version="1.12">
        <doc xml:whitespace="preserve">Get a list of properties applied to this object as a whole, as an #AtkAttributeSet consisting of 
name-value pairs. As such these attributes may be considered weakly-typed properties or annotations, 
as distinct from strongly-typed object data available via other get/set methods.
Not all objects have explicit "name-value pair" #AtkAttributeSet properties.


properties/annotations applied to the object, or an empty set if the object
has no name-value pair attributes assigned to it.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an #AtkAttributeSet consisting of all explicit</doc>
          <type name="AttributeSet" c:type="AtkAttributeSet*"/>
        </return-value>
      </method>
      <method name="get_description" c:identifier="atk_object_get_description">
        <doc xml:whitespace="preserve">Gets the accessible description of the accessible.

of the accessible.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a character string representing the accessible description</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_index_in_parent"
              c:identifier="atk_object_get_index_in_parent">
        <doc xml:whitespace="preserve">Gets the 0-based index of this accessible in its parent; returns -1 if the
accessible does not have an accessible parent.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an integer which is the index of the accessible in its parent</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </method>
      <method name="get_n_accessible_children"
              c:identifier="atk_object_get_n_accessible_children">
        <doc xml:whitespace="preserve">Gets the number of accessible children of the accessible.

of the accessible.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an integer representing the number of accessible children</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </method>
      <method name="get_name" c:identifier="atk_object_get_name">
        <doc xml:whitespace="preserve">Gets the accessible name of the accessible.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a character string representing the accessible name of the object.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_parent" c:identifier="atk_object_get_parent">
        <doc xml:whitespace="preserve">Gets the accessible parent of the accessible.

of the accessible</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #AtkObject representing the accessible parent</doc>
          <type name="Object" c:type="AtkObject*"/>
        </return-value>
      </method>
      <method name="get_role" c:identifier="atk_object_get_role">
        <doc xml:whitespace="preserve">Gets the role of the accessible.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an #AtkRole which is the role of the accessible</doc>
          <type name="Role" c:type="AtkRole"/>
        </return-value>
      </method>
      <method name="initialize" c:identifier="atk_object_initialize">
        <doc xml:whitespace="preserve">This function is called when implementing subclasses of #AtkObject.
It does initialization required for the new object. It is intended
that this function should called only in the ..._new() functions used
to create an instance of a subclass of #AtkObject</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="data" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gpointer which identifies the object for which the AtkObject was created.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="notify_state_change"
              c:identifier="atk_object_notify_state_change">
        <doc xml:whitespace="preserve">Emits a state-change signal for the specified state.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="state" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtkState whose state is changed</doc>
            <type name="State" c:type="AtkState"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:whitespace="preserve">a gboolean which indicates whether the state is being set on or off</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref_accessible_child"
              c:identifier="atk_object_ref_accessible_child">
        <doc xml:whitespace="preserve">Gets a reference to the specified accessible child of the object.
The accessible children are 0-based so the first accessible child is
at index 0, the second at index 1 and so on.

accessible child of the accessible.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtkObject representing the specified</doc>
          <type name="Object" c:type="AtkObject*"/>
        </return-value>
        <parameters>
          <parameter name="i" transfer-ownership="none">
            <doc xml:whitespace="preserve">a gint representing the position of the child, starting from 0</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref_relation_set"
              c:identifier="atk_object_ref_relation_set">
        <doc xml:whitespace="preserve">Gets the #AtkRelationSet associated with the object.

of the object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtkRelationSet representing the relation set</doc>
          <type name="RelationSet" c:type="AtkRelationSet*"/>
        </return-value>
      </method>
      <method name="ref_state_set" c:identifier="atk_object_ref_state_set">
        <doc xml:whitespace="preserve">Gets a reference to the state set of the accessible; the caller must
unreference it when it is no longer needed.

set of the accessible</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a reference to an #AtkStateSet which is the state</doc>
          <type name="StateSet" c:type="AtkStateSet*"/>
        </return-value>
      </method>
      <method name="remove_property_change_handler"
              c:identifier="atk_object_remove_property_change_handler">
        <doc xml:whitespace="preserve">Removes a property change handler.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="handler_id" transfer-ownership="none">
            <doc xml:whitespace="preserve">a guint which identifies the handler to be removed.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_relationship"
              c:identifier="atk_object_remove_relationship">
        <doc xml:whitespace="preserve">Removes a relationship of the specified type with the specified target.

Returns TRUE if the relationship is removed.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="relationship" transfer-ownership="none">
            <doc xml:whitespace="preserve">The #AtkRelationType of the relation</doc>
            <type name="RelationType" c:type="AtkRelationType"/>
          </parameter>
          <parameter name="target" transfer-ownership="none">
            <doc xml:whitespace="preserve">The #AtkObject which is the target of the relation to be removed.</doc>
            <type name="Object" c:type="AtkObject*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_description" c:identifier="atk_object_set_description">
        <doc xml:whitespace="preserve">Sets the accessible description of the accessible.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="description" transfer-ownership="none">
            <doc xml:whitespace="preserve">a character string to be set as the accessible description</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_name" c:identifier="atk_object_set_name">
        <doc xml:whitespace="preserve">Sets the accessible name of the accessible.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:whitespace="preserve">a character string to be set as the accessible name</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_parent" c:identifier="atk_object_set_parent">
        <doc xml:whitespace="preserve">Sets the accessible parent of the accessible.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="parent" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtkObject to be set as the accessible parent</doc>
            <type name="Object" c:type="AtkObject*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_role" c:identifier="atk_object_set_role">
        <doc xml:whitespace="preserve">Sets the role of the accessible.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="role" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtkRole to be set as the role</doc>
            <type name="Role" c:type="AtkRole"/>
          </parameter>
        </parameters>
      </method>
      <property name="accessible-component-layer" transfer-ownership="none">
        <type name="gint"/>
      </property>
      <property name="accessible-component-mdi-zorder"
                transfer-ownership="none">
        <type name="gint"/>
      </property>
      <property name="accessible-description"
                writable="1"
                transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="accessible-hypertext-nlinks" transfer-ownership="none">
        <type name="gint"/>
      </property>
      <property name="accessible-name" writable="1" transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="accessible-parent"
                writable="1"
                transfer-ownership="none">
        <type name="Object"/>
      </property>
      <property name="accessible-role" writable="1" transfer-ownership="none">
        <type name="gint"/>
      </property>
      <property name="accessible-table-caption"
                writable="1"
                transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="accessible-table-caption-object"
                writable="1"
                transfer-ownership="none">
        <type name="Object"/>
      </property>
      <property name="accessible-table-column-description"
                writable="1"
                transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="accessible-table-column-header"
                writable="1"
                transfer-ownership="none">
        <type name="Object"/>
      </property>
      <property name="accessible-table-row-description"
                writable="1"
                transfer-ownership="none">
        <type name="utf8"/>
      </property>
      <property name="accessible-table-row-header"
                writable="1"
                transfer-ownership="none">
        <type name="Object"/>
      </property>
      <property name="accessible-table-summary"
                writable="1"
                transfer-ownership="none">
        <type name="Object"/>
      </property>
      <property name="accessible-value" writable="1" transfer-ownership="none">
        <type name="gdouble"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="description">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="name">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="accessible_parent">
        <type name="Object" c:type="AtkObject*"/>
      </field>
      <field name="role">
        <type name="Role" c:type="AtkRole"/>
      </field>
      <field name="relation_set">
        <type name="RelationSet" c:type="AtkRelationSet*"/>
      </field>
      <field name="layer">
        <type name="Layer" c:type="AtkLayer"/>
      </field>
      <glib:signal name="active-descendant-changed" when="last" detailed="1">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="gpointer"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="children-changed" when="last" detailed="1">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="guint"/>
          </parameter>
          <parameter name="p0" transfer-ownership="none">
            <type name="gpointer"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="focus-event" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="gboolean"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="property-change" when="last" detailed="1">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="gpointer"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="state-change" when="last" detailed="1">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="utf8"/>
          </parameter>
          <parameter name="p0" transfer-ownership="none">
            <type name="gboolean"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="visible-data-changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="ObjectClass"
            c:type="AtkObjectClass"
            glib:is-gtype-struct-for="Object">
      <field name="parent">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="get_name">
        <callback name="get_name">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">a character string representing the accessible name of the object.</doc>
            <type name="utf8" c:type="gchar*"/>
          </return-value>
          <parameters>
            <parameter name="accessible" transfer-ownership="none">
              <type name="Object" c:type="AtkObject*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_description">
        <callback name="get_description">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">a character string representing the accessible description</doc>
            <type name="utf8" c:type="gchar*"/>
          </return-value>
          <parameters>
            <parameter name="accessible" transfer-ownership="none">
              <type name="Object" c:type="AtkObject*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_parent">
        <callback name="get_parent">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">a #AtkObject representing the accessible parent</doc>
            <type name="Object" c:type="AtkObject*"/>
          </return-value>
          <parameters>
            <parameter name="accessible" transfer-ownership="none">
              <type name="Object" c:type="AtkObject*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_n_children">
        <callback name="get_n_children">
          <return-value transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </return-value>
          <parameters>
            <parameter name="accessible" transfer-ownership="none">
              <type name="Object" c:type="AtkObject*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="ref_child" introspectable="0">
        <callback name="ref_child" introspectable="0">
          <return-value>
            <type name="Object" c:type="AtkObject*"/>
          </return-value>
          <parameters>
            <parameter name="accessible" transfer-ownership="none">
              <type name="Object" c:type="AtkObject*"/>
            </parameter>
            <parameter name="i" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_index_in_parent">
        <callback name="get_index_in_parent">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">an integer which is the index of the accessible in its parent</doc>
            <type name="gint" c:type="gint"/>
          </return-value>
          <parameters>
            <parameter name="accessible" transfer-ownership="none">
              <type name="Object" c:type="AtkObject*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="ref_relation_set">
        <callback name="ref_relation_set">
          <return-value transfer-ownership="full">
            <doc xml:whitespace="preserve">an #AtkRelationSet representing the relation set</doc>
            <type name="RelationSet" c:type="AtkRelationSet*"/>
          </return-value>
          <parameters>
            <parameter name="accessible" transfer-ownership="none">
              <type name="Object" c:type="AtkObject*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_role">
        <callback name="get_role">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtkRole which is the role of the accessible</doc>
            <type name="Role" c:type="AtkRole"/>
          </return-value>
          <parameters>
            <parameter name="accessible" transfer-ownership="none">
              <type name="Object" c:type="AtkObject*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_layer">
        <callback name="get_layer">
          <return-value transfer-ownership="none">
            <type name="Layer" c:type="AtkLayer"/>
          </return-value>
          <parameters>
            <parameter name="accessible" transfer-ownership="none">
              <type name="Object" c:type="AtkObject*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_mdi_zorder">
        <callback name="get_mdi_zorder">
          <return-value transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </return-value>
          <parameters>
            <parameter name="accessible" transfer-ownership="none">
              <type name="Object" c:type="AtkObject*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="ref_state_set">
        <callback name="ref_state_set">
          <return-value transfer-ownership="full">
            <doc xml:whitespace="preserve">a reference to an #AtkStateSet which is the state</doc>
            <type name="StateSet" c:type="AtkStateSet*"/>
          </return-value>
          <parameters>
            <parameter name="accessible" transfer-ownership="none">
              <type name="Object" c:type="AtkObject*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_name">
        <callback name="set_name">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="accessible" transfer-ownership="none">
              <type name="Object" c:type="AtkObject*"/>
            </parameter>
            <parameter name="name" transfer-ownership="none">
              <doc xml:whitespace="preserve">a character string to be set as the accessible name</doc>
              <type name="utf8" c:type="gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_description">
        <callback name="set_description">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="accessible" transfer-ownership="none">
              <type name="Object" c:type="AtkObject*"/>
            </parameter>
            <parameter name="description" transfer-ownership="none">
              <doc xml:whitespace="preserve">a character string to be set as the accessible description</doc>
              <type name="utf8" c:type="gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_parent">
        <callback name="set_parent">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="accessible" transfer-ownership="none">
              <type name="Object" c:type="AtkObject*"/>
            </parameter>
            <parameter name="parent" transfer-ownership="none">
              <doc xml:whitespace="preserve">an #AtkObject to be set as the accessible parent</doc>
              <type name="Object" c:type="AtkObject*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_role">
        <callback name="set_role">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="accessible" transfer-ownership="none">
              <type name="Object" c:type="AtkObject*"/>
            </parameter>
            <parameter name="role" transfer-ownership="none">
              <doc xml:whitespace="preserve">an #AtkRole to be set as the role</doc>
              <type name="Role" c:type="AtkRole"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="connect_property_change_handler" introspectable="0">
        <callback name="connect_property_change_handler" introspectable="0">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">a #guint which is the handler id used in</doc>
            <type name="guint" c:type="guint"/>
          </return-value>
          <parameters>
            <parameter name="accessible" transfer-ownership="none">
              <type name="Object" c:type="AtkObject*"/>
            </parameter>
            <parameter name="handler" transfer-ownership="none">
              <doc xml:whitespace="preserve">a function to be called when a property changes its value</doc>
              <type name="PropertyChangeHandler"
                    c:type="AtkPropertyChangeHandler*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="remove_property_change_handler">
        <callback name="remove_property_change_handler">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="accessible" transfer-ownership="none">
              <type name="Object" c:type="AtkObject*"/>
            </parameter>
            <parameter name="handler_id" transfer-ownership="none">
              <doc xml:whitespace="preserve">a guint which identifies the handler to be removed.</doc>
              <type name="guint" c:type="guint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="initialize">
        <callback name="initialize">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="accessible" transfer-ownership="none">
              <type name="Object" c:type="AtkObject*"/>
            </parameter>
            <parameter name="data" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #gpointer which identifies the object for which the AtkObject was created.</doc>
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="children_changed">
        <callback name="children_changed">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="accessible" transfer-ownership="none">
              <type name="Object" c:type="AtkObject*"/>
            </parameter>
            <parameter name="change_index" transfer-ownership="none">
              <type name="guint" c:type="guint"/>
            </parameter>
            <parameter name="changed_child" transfer-ownership="none">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="focus_event">
        <callback name="focus_event">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="accessible" transfer-ownership="none">
              <type name="Object" c:type="AtkObject*"/>
            </parameter>
            <parameter name="focus_in" transfer-ownership="none">
              <type name="gboolean" c:type="gboolean"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="property_change" introspectable="0">
        <callback name="property_change" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="accessible" transfer-ownership="none">
              <type name="Object" c:type="AtkObject*"/>
            </parameter>
            <parameter name="values" transfer-ownership="none">
              <type c:type="AtkPropertyValues*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="state_change">
        <callback name="state_change">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="accessible" transfer-ownership="none">
              <type name="Object" c:type="AtkObject*"/>
            </parameter>
            <parameter name="name" transfer-ownership="none">
              <type name="utf8" c:type="gchar*"/>
            </parameter>
            <parameter name="state_set" transfer-ownership="none">
              <type name="gboolean" c:type="gboolean"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="visible_data_changed">
        <callback name="visible_data_changed">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="accessible" transfer-ownership="none">
              <type name="Object" c:type="AtkObject*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="active_descendant_changed">
        <callback name="active_descendant_changed">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="accessible" transfer-ownership="none">
              <type name="Object" c:type="AtkObject*"/>
            </parameter>
            <parameter name="child" transfer-ownership="none">
              <type name="gpointer" c:type="gpointer*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_attributes">
        <callback name="get_attributes">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtkAttributeSet consisting of all explicit</doc>
            <type name="AttributeSet" c:type="AtkAttributeSet*"/>
          </return-value>
          <parameters>
            <parameter name="accessible" transfer-ownership="none">
              <type name="Object" c:type="AtkObject*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="pad1">
        <type name="Function" c:type="AtkFunction"/>
      </field>
      <field name="pad2">
        <type name="Function" c:type="AtkFunction"/>
      </field>
    </record>
    <class name="ObjectFactory"
           c:symbol-prefix="object_factory"
           c:type="AtkObjectFactory"
           parent="GObject.Object"
           glib:type-name="AtkObjectFactory"
           glib:get-type="atk_object_factory_get_type"
           glib:type-struct="ObjectFactoryClass">
      <virtual-method name="invalidate" invoker="invalidate">
        <doc xml:whitespace="preserve">Inform @factory that it is no longer being used to create
accessibles. When called, @factory may need to inform
#AtkObjects which it has created that they need to be re-instantiated.
Note: primarily used for runtime replacement of #AtkObjectFactorys
in object registries.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </virtual-method>
      <method name="create_accessible"
              c:identifier="atk_object_factory_create_accessible">
        <doc xml:whitespace="preserve">Provides an #AtkObject that implements an accessibility interface 
on behalf of @obj

interface on behalf of @obj</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtkObject that implements an accessibility</doc>
          <type name="Object" c:type="AtkObject*"/>
        </return-value>
        <parameters>
          <parameter name="obj" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #GObject</doc>
            <type name="GObject.Object" c:type="GObject*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_accessible_type"
              c:identifier="atk_object_factory_get_accessible_type">
        <doc xml:whitespace="preserve">Gets the GType of the accessible which is created by the factory. 
The value G_TYPE_INVALID is returned if no type if found.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the type of the accessible which is created by the @factory.</doc>
          <type name="GType" c:type="GType"/>
        </return-value>
      </method>
      <method name="invalidate" c:identifier="atk_object_factory_invalidate">
        <doc xml:whitespace="preserve">Inform @factory that it is no longer being used to create
accessibles. When called, @factory may need to inform
#AtkObjects which it has created that they need to be re-instantiated.
Note: primarily used for runtime replacement of #AtkObjectFactorys
in object registries.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="ObjectFactoryClass"
            c:type="AtkObjectFactoryClass"
            glib:is-gtype-struct-for="ObjectFactory">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="create_accessible" introspectable="0">
        <callback name="create_accessible" introspectable="0">
          <return-value>
            <type name="Object" c:type="AtkObject*"/>
          </return-value>
          <parameters>
            <parameter name="obj" transfer-ownership="none">
              <type name="GObject.Object" c:type="GObject*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="invalidate">
        <callback name="invalidate">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="factory" transfer-ownership="none">
              <type name="ObjectFactory" c:type="AtkObjectFactory*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_accessible_type">
        <callback name="get_accessible_type">
          <return-value transfer-ownership="none">
            <type name="GType" c:type="GType"/>
          </return-value>
        </callback>
      </field>
      <field name="pad1">
        <type name="Function" c:type="AtkFunction"/>
      </field>
      <field name="pad2">
        <type name="Function" c:type="AtkFunction"/>
      </field>
    </record>
    <class name="Plug"
           c:symbol-prefix="plug"
           c:type="AtkPlug"
           parent="Object"
           glib:type-name="AtkPlug"
           glib:get-type="atk_plug_get_type"
           glib:type-struct="PlugClass">
      <implements name="Component"/>
      <constructor name="new" c:identifier="atk_plug_new">
        <return-value transfer-ownership="full">
          <type name="Object" c:type="AtkObject*"/>
        </return-value>
      </constructor>
      <virtual-method name="get_object_id">
        <return-value transfer-ownership="full">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </virtual-method>
      <method name="get_id" c:identifier="atk_plug_get_id">
        <return-value transfer-ownership="full">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <field name="parent">
        <type name="Object" c:type="AtkObject"/>
      </field>
    </class>
    <record name="PlugClass"
            c:type="AtkPlugClass"
            glib:is-gtype-struct-for="Plug">
      <field name="parent_class">
        <type name="ObjectClass" c:type="AtkObjectClass"/>
      </field>
      <field name="get_object_id">
        <callback name="get_object_id">
          <return-value transfer-ownership="full">
            <type name="utf8" c:type="gchar*"/>
          </return-value>
          <parameters>
            <parameter name="obj" transfer-ownership="none">
              <type name="Plug" c:type="AtkPlug*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <callback name="PropertyChangeHandler"
              c:type="AtkPropertyChangeHandler"
              introspectable="0">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter transfer-ownership="none">
          <type name="Object" c:type="AtkObject*"/>
        </parameter>
        <parameter transfer-ownership="none">
          <type c:type="AtkPropertyValues*"/>
        </parameter>
      </parameters>
    </callback>
    <record name="Rectangle"
            c:type="AtkRectangle"
            glib:type-name="AtkRectangle"
            glib:get-type="atk_rectangle_get_type"
            c:symbol-prefix="rectangle">
      <field name="x" writable="1">
        <type name="gint" c:type="gint"/>
      </field>
      <field name="y" writable="1">
        <type name="gint" c:type="gint"/>
      </field>
      <field name="width" writable="1">
        <type name="gint" c:type="gint"/>
      </field>
      <field name="height" writable="1">
        <type name="gint" c:type="gint"/>
      </field>
    </record>
    <class name="Registry"
           c:symbol-prefix="registry"
           parent="GObject.Object"
           glib:type-name="AtkRegistry"
           glib:get-type="atk_registry_get_type">
      <method name="get_factory" c:identifier="atk_registry_get_factory">
        <doc xml:whitespace="preserve">Gets an #AtkObjectFactory appropriate for creating #AtkObjects
appropriate for @type.

#AtkObjects appropriate for @type.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an #AtkObjectFactory appropriate for creating</doc>
          <type name="ObjectFactory" c:type="AtkObjectFactory*"/>
        </return-value>
        <parameters>
          <parameter name="type" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #GType with which to look up the associated #AtkObjectFactory</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_factory_type"
              c:identifier="atk_registry_get_factory_type">
        <doc xml:whitespace="preserve">Provides a #GType indicating the #AtkObjectFactory subclass
associated with @type.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #GType associated with type @type</doc>
          <type name="GType" c:type="GType"/>
        </return-value>
        <parameters>
          <parameter name="type" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #GType with which to look up the associated #AtkObjectFactory subclass</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_factory_type"
              c:identifier="atk_registry_set_factory_type">
        <doc xml:whitespace="preserve">Associate an #AtkObjectFactory subclass with a #GType. Note:
The associated @factory_type will thereafter be responsible for
the creation of new #AtkObject implementations for instances
appropriate for @type.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="type" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtkObject type</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
          <parameter name="factory_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtkObjectFactory type to associate with @type.  Must implement AtkObject appropriate for @type.</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
        </parameters>
      </method>
    </class>
    <class name="Relation"
           c:symbol-prefix="relation"
           c:type="AtkRelation"
           parent="GObject.Object"
           glib:type-name="AtkRelation"
           glib:get-type="atk_relation_get_type"
           glib:type-struct="RelationClass">
      <constructor name="new" c:identifier="atk_relation_new">
        <doc xml:whitespace="preserve">Create a new relation for the specified key and the specified list
of targets.  See also atk_object_add_relationship().</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to a new #AtkRelation</doc>
          <type name="Relation" c:type="AtkRelation*"/>
        </return-value>
        <parameters>
          <parameter name="targets" transfer-ownership="none">
            <doc xml:whitespace="preserve">an array of pointers to #AtkObjects</doc>
            <type name="Object" c:type="AtkObject**"/>
          </parameter>
          <parameter name="n_targets" transfer-ownership="none">
            <doc xml:whitespace="preserve">number of #AtkObjects pointed to by @targets</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="relationship" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtkRelationType with which to create the new #AtkRelation</doc>
            <type name="RelationType" c:type="AtkRelationType"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="add_target"
              c:identifier="atk_relation_add_target"
              version="1.9">
        <doc xml:whitespace="preserve">Adds the specified AtkObject to the target for the relation, if it is
not already present.  See also atk_object_add_relationship().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="target" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtkObject</doc>
            <type name="Object" c:type="AtkObject*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_relation_type"
              c:identifier="atk_relation_get_relation_type">
        <doc xml:whitespace="preserve">Gets the type of @relation</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the type of @relation</doc>
          <type name="RelationType" c:type="AtkRelationType"/>
        </return-value>
      </method>
      <method name="get_target" c:identifier="atk_relation_get_target">
        <doc xml:whitespace="preserve">Gets the target list of @relation</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the target list of @relation</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="gpointer" c:type="gpointer"/>
          </array>
        </return-value>
      </method>
      <method name="remove_target" c:identifier="atk_relation_remove_target">
        <doc xml:whitespace="preserve">Remove the specified AtkObject from the target for the relation.

Returns TRUE if the removal is successful.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="target" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtkObject</doc>
            <type name="Object" c:type="AtkObject*"/>
          </parameter>
        </parameters>
      </method>
      <property name="relation-type" writable="1" transfer-ownership="none">
        <type name="RelationType"/>
      </property>
      <property name="target" writable="1" transfer-ownership="none">
        <type name="GObject.ValueArray"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="target">
        <array name="GLib.PtrArray" c:type="GPtrArray*">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
      <field name="relationship">
        <type name="RelationType" c:type="AtkRelationType"/>
      </field>
    </class>
    <record name="RelationClass"
            c:type="AtkRelationClass"
            glib:is-gtype-struct-for="Relation">
      <field name="parent">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="RelationSet"
           c:symbol-prefix="relation_set"
           c:type="AtkRelationSet"
           parent="GObject.Object"
           glib:type-name="AtkRelationSet"
           glib:get-type="atk_relation_set_get_type"
           glib:type-struct="RelationSetClass">
      <constructor name="new" c:identifier="atk_relation_set_new">
        <doc xml:whitespace="preserve">Creates a new empty relation set.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a new #AtkRelationSet</doc>
          <type name="RelationSet" c:type="AtkRelationSet*"/>
        </return-value>
      </constructor>
      <method name="add" c:identifier="atk_relation_set_add">
        <doc xml:whitespace="preserve">Add a new relation to the current relation set if it is not already
present.
This function ref's the AtkRelation so the caller of this function
should unref it to ensure that it will be destroyed when the AtkRelationSet
is destroyed.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="relation" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtkRelation</doc>
            <type name="Relation" c:type="AtkRelation*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_relation_by_type"
              c:identifier="atk_relation_set_add_relation_by_type"
              version="1.9">
        <doc xml:whitespace="preserve">Add a new relation of the specified type with the specified target to 
the current relation set if the relation set does not contain a relation
of that type. If it is does contain a relation of that typea the target
is added to the relation.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="relationship" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtkRelationType</doc>
            <type name="RelationType" c:type="AtkRelationType"/>
          </parameter>
          <parameter name="target" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtkObject</doc>
            <type name="Object" c:type="AtkObject*"/>
          </parameter>
        </parameters>
      </method>
      <method name="contains" c:identifier="atk_relation_set_contains">
        <doc xml:whitespace="preserve">Determines whether the relation set contains a relation that matches the
specified type.

in @set, %FALSE otherwise</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if @relationship is the relationship type of a relation</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="relationship" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtkRelationType</doc>
            <type name="RelationType" c:type="AtkRelationType"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_n_relations"
              c:identifier="atk_relation_set_get_n_relations">
        <doc xml:whitespace="preserve">Determines the number of relations in a relation set.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an integer representing the number of relations in the set.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </method>
      <method name="get_relation" c:identifier="atk_relation_set_get_relation">
        <doc xml:whitespace="preserve">Determines the relation at the specified position in the relation set.

position i in the set.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #AtkRelation, which is the relation at</doc>
          <type name="Relation" c:type="AtkRelation*"/>
        </return-value>
        <parameters>
          <parameter name="i" transfer-ownership="none">
            <doc xml:whitespace="preserve">a gint representing a position in the set, starting from 0.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_relation_by_type"
              c:identifier="atk_relation_set_get_relation_by_type">
        <doc xml:whitespace="preserve">Finds a relation that matches the specified type.

specified type.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an #AtkRelation, which is a relation matching the</doc>
          <type name="Relation" c:type="AtkRelation*"/>
        </return-value>
        <parameters>
          <parameter name="relationship" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtkRelationType</doc>
            <type name="RelationType" c:type="AtkRelationType"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove" c:identifier="atk_relation_set_remove">
        <doc xml:whitespace="preserve">Removes a relation from the relation set.
This function unref's the #AtkRelation so it will be deleted unless there
is another reference to it.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="relation" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtkRelation</doc>
            <type name="Relation" c:type="AtkRelation*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="relations">
        <array name="GLib.PtrArray" c:type="GPtrArray*">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </class>
    <record name="RelationSetClass"
            c:type="AtkRelationSetClass"
            glib:is-gtype-struct-for="RelationSet">
      <field name="parent">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="pad1">
        <type name="Function" c:type="AtkFunction"/>
      </field>
      <field name="pad2">
        <type name="Function" c:type="AtkFunction"/>
      </field>
    </record>
    <enumeration name="RelationType"
                 glib:type-name="AtkRelationType"
                 glib:get-type="atk_relation_type_get_type"
                 c:type="AtkRelationType">
      <member name="null"
              value="0"
              c:identifier="ATK_RELATION_NULL"
              glib:nick="null"/>
      <member name="controlled_by"
              value="1"
              c:identifier="ATK_RELATION_CONTROLLED_BY"
              glib:nick="controlled-by"/>
      <member name="controller_for"
              value="2"
              c:identifier="ATK_RELATION_CONTROLLER_FOR"
              glib:nick="controller-for"/>
      <member name="label_for"
              value="3"
              c:identifier="ATK_RELATION_LABEL_FOR"
              glib:nick="label-for"/>
      <member name="labelled_by"
              value="4"
              c:identifier="ATK_RELATION_LABELLED_BY"
              glib:nick="labelled-by"/>
      <member name="member_of"
              value="5"
              c:identifier="ATK_RELATION_MEMBER_OF"
              glib:nick="member-of"/>
      <member name="node_child_of"
              value="6"
              c:identifier="ATK_RELATION_NODE_CHILD_OF"
              glib:nick="node-child-of"/>
      <member name="flows_to"
              value="7"
              c:identifier="ATK_RELATION_FLOWS_TO"
              glib:nick="flows-to"/>
      <member name="flows_from"
              value="8"
              c:identifier="ATK_RELATION_FLOWS_FROM"
              glib:nick="flows-from"/>
      <member name="subwindow_of"
              value="9"
              c:identifier="ATK_RELATION_SUBWINDOW_OF"
              glib:nick="subwindow-of"/>
      <member name="embeds"
              value="10"
              c:identifier="ATK_RELATION_EMBEDS"
              glib:nick="embeds"/>
      <member name="embedded_by"
              value="11"
              c:identifier="ATK_RELATION_EMBEDDED_BY"
              glib:nick="embedded-by"/>
      <member name="popup_for"
              value="12"
              c:identifier="ATK_RELATION_POPUP_FOR"
              glib:nick="popup-for"/>
      <member name="parent_window_of"
              value="13"
              c:identifier="ATK_RELATION_PARENT_WINDOW_OF"
              glib:nick="parent-window-of"/>
      <member name="described_by"
              value="14"
              c:identifier="ATK_RELATION_DESCRIBED_BY"
              glib:nick="described-by"/>
      <member name="description_for"
              value="15"
              c:identifier="ATK_RELATION_DESCRIPTION_FOR"
              glib:nick="description-for"/>
      <member name="node_parent_of"
              value="16"
              c:identifier="ATK_RELATION_NODE_PARENT_OF"
              glib:nick="node-parent-of"/>
      <member name="last_defined"
              value="17"
              c:identifier="ATK_RELATION_LAST_DEFINED"
              glib:nick="last-defined"/>
      <function name="for_name" c:identifier="atk_relation_type_for_name">
        <doc xml:whitespace="preserve">Get the #AtkRelationType type corresponding to a relation name.

or #ATK_RELATION_NULL if no matching relation type is found.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the #AtkRelationType enumerated type corresponding to the specified name,</doc>
          <type name="RelationType" c:type="AtkRelationType"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:whitespace="preserve">a string which is the (non-localized) name of an ATK relation type.</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="get_name" c:identifier="atk_relation_type_get_name">
        <doc xml:whitespace="preserve">Gets the description string describing the #AtkRelationType @type.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the string describing the AtkRelationType</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="type" transfer-ownership="none">
            <doc xml:whitespace="preserve">The #AtkRelationType whose name is required</doc>
            <type name="RelationType" c:type="AtkRelationType"/>
          </parameter>
        </parameters>
      </function>
      <function name="register" c:identifier="atk_relation_type_register">
        <doc xml:whitespace="preserve">Associate @name with a new #AtkRelationType</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an #AtkRelationType associated with @name</doc>
          <type name="RelationType" c:type="AtkRelationType"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:whitespace="preserve">a name string</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </function>
    </enumeration>
    <enumeration name="Role"
                 glib:type-name="AtkRole"
                 glib:get-type="atk_role_get_type"
                 c:type="AtkRole">
      <member name="invalid"
              value="0"
              c:identifier="ATK_ROLE_INVALID"
              glib:nick="invalid"/>
      <member name="accel_label"
              value="1"
              c:identifier="ATK_ROLE_ACCEL_LABEL"
              glib:nick="accel-label"/>
      <member name="alert"
              value="2"
              c:identifier="ATK_ROLE_ALERT"
              glib:nick="alert"/>
      <member name="animation"
              value="3"
              c:identifier="ATK_ROLE_ANIMATION"
              glib:nick="animation"/>
      <member name="arrow"
              value="4"
              c:identifier="ATK_ROLE_ARROW"
              glib:nick="arrow"/>
      <member name="calendar"
              value="5"
              c:identifier="ATK_ROLE_CALENDAR"
              glib:nick="calendar"/>
      <member name="canvas"
              value="6"
              c:identifier="ATK_ROLE_CANVAS"
              glib:nick="canvas"/>
      <member name="check_box"
              value="7"
              c:identifier="ATK_ROLE_CHECK_BOX"
              glib:nick="check-box"/>
      <member name="check_menu_item"
              value="8"
              c:identifier="ATK_ROLE_CHECK_MENU_ITEM"
              glib:nick="check-menu-item"/>
      <member name="color_chooser"
              value="9"
              c:identifier="ATK_ROLE_COLOR_CHOOSER"
              glib:nick="color-chooser"/>
      <member name="column_header"
              value="10"
              c:identifier="ATK_ROLE_COLUMN_HEADER"
              glib:nick="column-header"/>
      <member name="combo_box"
              value="11"
              c:identifier="ATK_ROLE_COMBO_BOX"
              glib:nick="combo-box"/>
      <member name="date_editor"
              value="12"
              c:identifier="ATK_ROLE_DATE_EDITOR"
              glib:nick="date-editor"/>
      <member name="desktop_icon"
              value="13"
              c:identifier="ATK_ROLE_DESKTOP_ICON"
              glib:nick="desktop-icon"/>
      <member name="desktop_frame"
              value="14"
              c:identifier="ATK_ROLE_DESKTOP_FRAME"
              glib:nick="desktop-frame"/>
      <member name="dial"
              value="15"
              c:identifier="ATK_ROLE_DIAL"
              glib:nick="dial"/>
      <member name="dialog"
              value="16"
              c:identifier="ATK_ROLE_DIALOG"
              glib:nick="dialog"/>
      <member name="directory_pane"
              value="17"
              c:identifier="ATK_ROLE_DIRECTORY_PANE"
              glib:nick="directory-pane"/>
      <member name="drawing_area"
              value="18"
              c:identifier="ATK_ROLE_DRAWING_AREA"
              glib:nick="drawing-area"/>
      <member name="file_chooser"
              value="19"
              c:identifier="ATK_ROLE_FILE_CHOOSER"
              glib:nick="file-chooser"/>
      <member name="filler"
              value="20"
              c:identifier="ATK_ROLE_FILLER"
              glib:nick="filler"/>
      <member name="font_chooser"
              value="21"
              c:identifier="ATK_ROLE_FONT_CHOOSER"
              glib:nick="font-chooser"/>
      <member name="frame"
              value="22"
              c:identifier="ATK_ROLE_FRAME"
              glib:nick="frame"/>
      <member name="glass_pane"
              value="23"
              c:identifier="ATK_ROLE_GLASS_PANE"
              glib:nick="glass-pane"/>
      <member name="html_container"
              value="24"
              c:identifier="ATK_ROLE_HTML_CONTAINER"
              glib:nick="html-container"/>
      <member name="icon"
              value="25"
              c:identifier="ATK_ROLE_ICON"
              glib:nick="icon"/>
      <member name="image"
              value="26"
              c:identifier="ATK_ROLE_IMAGE"
              glib:nick="image"/>
      <member name="internal_frame"
              value="27"
              c:identifier="ATK_ROLE_INTERNAL_FRAME"
              glib:nick="internal-frame"/>
      <member name="label"
              value="28"
              c:identifier="ATK_ROLE_LABEL"
              glib:nick="label"/>
      <member name="layered_pane"
              value="29"
              c:identifier="ATK_ROLE_LAYERED_PANE"
              glib:nick="layered-pane"/>
      <member name="list"
              value="30"
              c:identifier="ATK_ROLE_LIST"
              glib:nick="list"/>
      <member name="list_item"
              value="31"
              c:identifier="ATK_ROLE_LIST_ITEM"
              glib:nick="list-item"/>
      <member name="menu"
              value="32"
              c:identifier="ATK_ROLE_MENU"
              glib:nick="menu"/>
      <member name="menu_bar"
              value="33"
              c:identifier="ATK_ROLE_MENU_BAR"
              glib:nick="menu-bar"/>
      <member name="menu_item"
              value="34"
              c:identifier="ATK_ROLE_MENU_ITEM"
              glib:nick="menu-item"/>
      <member name="option_pane"
              value="35"
              c:identifier="ATK_ROLE_OPTION_PANE"
              glib:nick="option-pane"/>
      <member name="page_tab"
              value="36"
              c:identifier="ATK_ROLE_PAGE_TAB"
              glib:nick="page-tab"/>
      <member name="page_tab_list"
              value="37"
              c:identifier="ATK_ROLE_PAGE_TAB_LIST"
              glib:nick="page-tab-list"/>
      <member name="panel"
              value="38"
              c:identifier="ATK_ROLE_PANEL"
              glib:nick="panel"/>
      <member name="password_text"
              value="39"
              c:identifier="ATK_ROLE_PASSWORD_TEXT"
              glib:nick="password-text"/>
      <member name="popup_menu"
              value="40"
              c:identifier="ATK_ROLE_POPUP_MENU"
              glib:nick="popup-menu"/>
      <member name="progress_bar"
              value="41"
              c:identifier="ATK_ROLE_PROGRESS_BAR"
              glib:nick="progress-bar"/>
      <member name="push_button"
              value="42"
              c:identifier="ATK_ROLE_PUSH_BUTTON"
              glib:nick="push-button"/>
      <member name="radio_button"
              value="43"
              c:identifier="ATK_ROLE_RADIO_BUTTON"
              glib:nick="radio-button"/>
      <member name="radio_menu_item"
              value="44"
              c:identifier="ATK_ROLE_RADIO_MENU_ITEM"
              glib:nick="radio-menu-item"/>
      <member name="root_pane"
              value="45"
              c:identifier="ATK_ROLE_ROOT_PANE"
              glib:nick="root-pane"/>
      <member name="row_header"
              value="46"
              c:identifier="ATK_ROLE_ROW_HEADER"
              glib:nick="row-header"/>
      <member name="scroll_bar"
              value="47"
              c:identifier="ATK_ROLE_SCROLL_BAR"
              glib:nick="scroll-bar"/>
      <member name="scroll_pane"
              value="48"
              c:identifier="ATK_ROLE_SCROLL_PANE"
              glib:nick="scroll-pane"/>
      <member name="separator"
              value="49"
              c:identifier="ATK_ROLE_SEPARATOR"
              glib:nick="separator"/>
      <member name="slider"
              value="50"
              c:identifier="ATK_ROLE_SLIDER"
              glib:nick="slider"/>
      <member name="split_pane"
              value="51"
              c:identifier="ATK_ROLE_SPLIT_PANE"
              glib:nick="split-pane"/>
      <member name="spin_button"
              value="52"
              c:identifier="ATK_ROLE_SPIN_BUTTON"
              glib:nick="spin-button"/>
      <member name="statusbar"
              value="53"
              c:identifier="ATK_ROLE_STATUSBAR"
              glib:nick="statusbar"/>
      <member name="table"
              value="54"
              c:identifier="ATK_ROLE_TABLE"
              glib:nick="table"/>
      <member name="table_cell"
              value="55"
              c:identifier="ATK_ROLE_TABLE_CELL"
              glib:nick="table-cell"/>
      <member name="table_column_header"
              value="56"
              c:identifier="ATK_ROLE_TABLE_COLUMN_HEADER"
              glib:nick="table-column-header"/>
      <member name="table_row_header"
              value="57"
              c:identifier="ATK_ROLE_TABLE_ROW_HEADER"
              glib:nick="table-row-header"/>
      <member name="tear_off_menu_item"
              value="58"
              c:identifier="ATK_ROLE_TEAR_OFF_MENU_ITEM"
              glib:nick="tear-off-menu-item"/>
      <member name="terminal"
              value="59"
              c:identifier="ATK_ROLE_TERMINAL"
              glib:nick="terminal"/>
      <member name="text"
              value="60"
              c:identifier="ATK_ROLE_TEXT"
              glib:nick="text"/>
      <member name="toggle_button"
              value="61"
              c:identifier="ATK_ROLE_TOGGLE_BUTTON"
              glib:nick="toggle-button"/>
      <member name="tool_bar"
              value="62"
              c:identifier="ATK_ROLE_TOOL_BAR"
              glib:nick="tool-bar"/>
      <member name="tool_tip"
              value="63"
              c:identifier="ATK_ROLE_TOOL_TIP"
              glib:nick="tool-tip"/>
      <member name="tree"
              value="64"
              c:identifier="ATK_ROLE_TREE"
              glib:nick="tree"/>
      <member name="tree_table"
              value="65"
              c:identifier="ATK_ROLE_TREE_TABLE"
              glib:nick="tree-table"/>
      <member name="unknown"
              value="66"
              c:identifier="ATK_ROLE_UNKNOWN"
              glib:nick="unknown"/>
      <member name="viewport"
              value="67"
              c:identifier="ATK_ROLE_VIEWPORT"
              glib:nick="viewport"/>
      <member name="window"
              value="68"
              c:identifier="ATK_ROLE_WINDOW"
              glib:nick="window"/>
      <member name="header"
              value="69"
              c:identifier="ATK_ROLE_HEADER"
              glib:nick="header"/>
      <member name="footer"
              value="70"
              c:identifier="ATK_ROLE_FOOTER"
              glib:nick="footer"/>
      <member name="paragraph"
              value="71"
              c:identifier="ATK_ROLE_PARAGRAPH"
              glib:nick="paragraph"/>
      <member name="ruler"
              value="72"
              c:identifier="ATK_ROLE_RULER"
              glib:nick="ruler"/>
      <member name="application"
              value="73"
              c:identifier="ATK_ROLE_APPLICATION"
              glib:nick="application"/>
      <member name="autocomplete"
              value="74"
              c:identifier="ATK_ROLE_AUTOCOMPLETE"
              glib:nick="autocomplete"/>
      <member name="editbar"
              value="75"
              c:identifier="ATK_ROLE_EDITBAR"
              glib:nick="editbar"/>
      <member name="embedded"
              value="76"
              c:identifier="ATK_ROLE_EMBEDDED"
              glib:nick="embedded"/>
      <member name="entry"
              value="77"
              c:identifier="ATK_ROLE_ENTRY"
              glib:nick="entry"/>
      <member name="chart"
              value="78"
              c:identifier="ATK_ROLE_CHART"
              glib:nick="chart"/>
      <member name="caption"
              value="79"
              c:identifier="ATK_ROLE_CAPTION"
              glib:nick="caption"/>
      <member name="document_frame"
              value="80"
              c:identifier="ATK_ROLE_DOCUMENT_FRAME"
              glib:nick="document-frame"/>
      <member name="heading"
              value="81"
              c:identifier="ATK_ROLE_HEADING"
              glib:nick="heading"/>
      <member name="page"
              value="82"
              c:identifier="ATK_ROLE_PAGE"
              glib:nick="page"/>
      <member name="section"
              value="83"
              c:identifier="ATK_ROLE_SECTION"
              glib:nick="section"/>
      <member name="redundant_object"
              value="84"
              c:identifier="ATK_ROLE_REDUNDANT_OBJECT"
              glib:nick="redundant-object"/>
      <member name="form"
              value="85"
              c:identifier="ATK_ROLE_FORM"
              glib:nick="form"/>
      <member name="link"
              value="86"
              c:identifier="ATK_ROLE_LINK"
              glib:nick="link"/>
      <member name="input_method_window"
              value="87"
              c:identifier="ATK_ROLE_INPUT_METHOD_WINDOW"
              glib:nick="input-method-window"/>
      <member name="table_row"
              value="88"
              c:identifier="ATK_ROLE_TABLE_ROW"
              glib:nick="table-row"/>
      <member name="tree_item"
              value="89"
              c:identifier="ATK_ROLE_TREE_ITEM"
              glib:nick="tree-item"/>
      <member name="document_spreadsheet"
              value="90"
              c:identifier="ATK_ROLE_DOCUMENT_SPREADSHEET"
              glib:nick="document-spreadsheet"/>
      <member name="document_presentation"
              value="91"
              c:identifier="ATK_ROLE_DOCUMENT_PRESENTATION"
              glib:nick="document-presentation"/>
      <member name="document_text"
              value="92"
              c:identifier="ATK_ROLE_DOCUMENT_TEXT"
              glib:nick="document-text"/>
      <member name="document_web"
              value="93"
              c:identifier="ATK_ROLE_DOCUMENT_WEB"
              glib:nick="document-web"/>
      <member name="document_email"
              value="94"
              c:identifier="ATK_ROLE_DOCUMENT_EMAIL"
              glib:nick="document-email"/>
      <member name="comment"
              value="95"
              c:identifier="ATK_ROLE_COMMENT"
              glib:nick="comment"/>
      <member name="list_box"
              value="96"
              c:identifier="ATK_ROLE_LIST_BOX"
              glib:nick="list-box"/>
      <member name="grouping"
              value="97"
              c:identifier="ATK_ROLE_GROUPING"
              glib:nick="grouping"/>
      <member name="image_map"
              value="98"
              c:identifier="ATK_ROLE_IMAGE_MAP"
              glib:nick="image-map"/>
      <member name="notification"
              value="99"
              c:identifier="ATK_ROLE_NOTIFICATION"
              glib:nick="notification"/>
      <member name="info_bar"
              value="100"
              c:identifier="ATK_ROLE_INFO_BAR"
              glib:nick="info-bar"/>
      <member name="last_defined"
              value="101"
              c:identifier="ATK_ROLE_LAST_DEFINED"
              glib:nick="last-defined"/>
      <function name="for_name" c:identifier="atk_role_for_name">
        <doc xml:whitespace="preserve">Get the #AtkRole type corresponding to a rolew name.

or #ATK_ROLE_INVALID if no matching role is found.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the #AtkRole enumerated type corresponding to the specified</doc>
          <type name="Role" c:type="AtkRole"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:whitespace="preserve">a string which is the (non-localized) name of an ATK role.</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="get_localized_name"
                c:identifier="atk_role_get_localized_name">
        <doc xml:whitespace="preserve">Gets the localized description string describing the #AtkRole @role.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the localized string describing the AtkRole</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="role" transfer-ownership="none">
            <doc xml:whitespace="preserve">The #AtkRole whose localized name is required</doc>
            <type name="Role" c:type="AtkRole"/>
          </parameter>
        </parameters>
      </function>
      <function name="get_name" c:identifier="atk_role_get_name">
        <doc xml:whitespace="preserve">Gets the description string describing the #AtkRole @role.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the string describing the AtkRole</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="role" transfer-ownership="none">
            <doc xml:whitespace="preserve">The #AtkRole whose name is required</doc>
            <type name="Role" c:type="AtkRole"/>
          </parameter>
        </parameters>
      </function>
      <function name="register" c:identifier="atk_role_register">
        <doc xml:whitespace="preserve">Registers the role specified by @name.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an #AtkRole for the new role.</doc>
          <type name="Role" c:type="AtkRole"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:whitespace="preserve">a character string describing the new role.</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </function>
    </enumeration>
    <interface name="Selection"
               c:symbol-prefix="selection"
               c:type="AtkSelection"
               glib:type-name="AtkSelection"
               glib:get-type="atk_selection_get_type"
               glib:type-struct="SelectionIface">
      <virtual-method name="add_selection" invoker="add_selection">
        <doc xml:whitespace="preserve">Adds the specified accessible child of the object to the
object's selection.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">TRUE if success, FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="i" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint specifying the child index.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="clear_selection" invoker="clear_selection">
        <doc xml:whitespace="preserve">Clears the selection in the object so that no children in the object
are selected.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">TRUE if success, FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </virtual-method>
      <virtual-method name="get_selection_count" invoker="get_selection_count">
        <doc xml:whitespace="preserve">Gets the number of accessible children currently selected.
Note: callers should not rely on %NULL or on a zero value for
indication of whether AtkSelectionIface is implemented, they should
use type checking/interface checking macros or the
atk_get_accessible_value() convenience method.

if @selection does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint representing the number of items selected, or 0</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </virtual-method>
      <virtual-method name="is_child_selected" invoker="is_child_selected">
        <doc xml:whitespace="preserve">Determines if the current child of this object is selected
Note: callers should not rely on %NULL or on a zero value for
indication of whether AtkSelectionIface is implemented, they should
use type checking/interface checking macros or the
atk_get_accessible_value() convenience method.

if @selection does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gboolean representing the specified child is selected, or 0</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="i" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint specifying the child index.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="ref_selection" invoker="ref_selection">
        <doc xml:whitespace="preserve">Gets a reference to the accessible object representing the specified 
selected child of the object.
Note: callers should not rely on %NULL or on a zero value for
indication of whether AtkSelectionIface is implemented, they should
use type checking/interface checking macros or the
atk_get_accessible_value() convenience method.

accessible , or %NULL if @selection does not implement this interface.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtkObject representing the selected</doc>
          <type name="Object" c:type="AtkObject*"/>
        </return-value>
        <parameters>
          <parameter name="i" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint specifying the index in the selection set.  (e.g. the ith selection as opposed to the ith child).</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="remove_selection" invoker="remove_selection">
        <doc xml:whitespace="preserve">Removes the specified child of the object from the object's selection.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">TRUE if success, FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="i" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint specifying the index in the selection set.  (e.g. the ith selection as opposed to the ith child).</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="select_all_selection"
                      invoker="select_all_selection">
        <doc xml:whitespace="preserve">Causes every child of the object to be selected if the object
supports multiple selections.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">TRUE if success, FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </virtual-method>
      <virtual-method name="selection_changed">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </virtual-method>
      <method name="add_selection" c:identifier="atk_selection_add_selection">
        <doc xml:whitespace="preserve">Adds the specified accessible child of the object to the
object's selection.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">TRUE if success, FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="i" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint specifying the child index.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="clear_selection"
              c:identifier="atk_selection_clear_selection">
        <doc xml:whitespace="preserve">Clears the selection in the object so that no children in the object
are selected.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">TRUE if success, FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="get_selection_count"
              c:identifier="atk_selection_get_selection_count">
        <doc xml:whitespace="preserve">Gets the number of accessible children currently selected.
Note: callers should not rely on %NULL or on a zero value for
indication of whether AtkSelectionIface is implemented, they should
use type checking/interface checking macros or the
atk_get_accessible_value() convenience method.

if @selection does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint representing the number of items selected, or 0</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </method>
      <method name="is_child_selected"
              c:identifier="atk_selection_is_child_selected">
        <doc xml:whitespace="preserve">Determines if the current child of this object is selected
Note: callers should not rely on %NULL or on a zero value for
indication of whether AtkSelectionIface is implemented, they should
use type checking/interface checking macros or the
atk_get_accessible_value() convenience method.

if @selection does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gboolean representing the specified child is selected, or 0</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="i" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint specifying the child index.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref_selection" c:identifier="atk_selection_ref_selection">
        <doc xml:whitespace="preserve">Gets a reference to the accessible object representing the specified 
selected child of the object.
Note: callers should not rely on %NULL or on a zero value for
indication of whether AtkSelectionIface is implemented, they should
use type checking/interface checking macros or the
atk_get_accessible_value() convenience method.

accessible , or %NULL if @selection does not implement this interface.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtkObject representing the selected</doc>
          <type name="Object" c:type="AtkObject*"/>
        </return-value>
        <parameters>
          <parameter name="i" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint specifying the index in the selection set.  (e.g. the ith selection as opposed to the ith child).</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_selection"
              c:identifier="atk_selection_remove_selection">
        <doc xml:whitespace="preserve">Removes the specified child of the object from the object's selection.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">TRUE if success, FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="i" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint specifying the index in the selection set.  (e.g. the ith selection as opposed to the ith child).</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="select_all_selection"
              c:identifier="atk_selection_select_all_selection">
        <doc xml:whitespace="preserve">Causes every child of the object to be selected if the object
supports multiple selections.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">TRUE if success, FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </method>
      <glib:signal name="selection-changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
      </glib:signal>
    </interface>
    <record name="SelectionIface"
            c:type="AtkSelectionIface"
            glib:is-gtype-struct-for="Selection">
      <field name="parent">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="add_selection">
        <callback name="add_selection">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">TRUE if success, FALSE otherwise.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="selection" transfer-ownership="none">
              <type name="Selection" c:type="AtkSelection*"/>
            </parameter>
            <parameter name="i" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #gint specifying the child index.</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="clear_selection">
        <callback name="clear_selection">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">TRUE if success, FALSE otherwise.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="selection" transfer-ownership="none">
              <type name="Selection" c:type="AtkSelection*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="ref_selection">
        <callback name="ref_selection">
          <return-value transfer-ownership="full">
            <doc xml:whitespace="preserve">an #AtkObject representing the selected</doc>
            <type name="Object" c:type="AtkObject*"/>
          </return-value>
          <parameters>
            <parameter name="selection" transfer-ownership="none">
              <type name="Selection" c:type="AtkSelection*"/>
            </parameter>
            <parameter name="i" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #gint specifying the index in the selection set.  (e.g. the ith selection as opposed to the ith child).</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_selection_count">
        <callback name="get_selection_count">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">a gint representing the number of items selected, or 0</doc>
            <type name="gint" c:type="gint"/>
          </return-value>
          <parameters>
            <parameter name="selection" transfer-ownership="none">
              <type name="Selection" c:type="AtkSelection*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="is_child_selected">
        <callback name="is_child_selected">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">a gboolean representing the specified child is selected, or 0</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="selection" transfer-ownership="none">
              <type name="Selection" c:type="AtkSelection*"/>
            </parameter>
            <parameter name="i" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #gint specifying the child index.</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="remove_selection">
        <callback name="remove_selection">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">TRUE if success, FALSE otherwise.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="selection" transfer-ownership="none">
              <type name="Selection" c:type="AtkSelection*"/>
            </parameter>
            <parameter name="i" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #gint specifying the index in the selection set.  (e.g. the ith selection as opposed to the ith child).</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="select_all_selection">
        <callback name="select_all_selection">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">TRUE if success, FALSE otherwise.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="selection" transfer-ownership="none">
              <type name="Selection" c:type="AtkSelection*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="selection_changed">
        <callback name="selection_changed">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="selection" transfer-ownership="none">
              <type name="Selection" c:type="AtkSelection*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="pad1">
        <type name="Function" c:type="AtkFunction"/>
      </field>
      <field name="pad2">
        <type name="Function" c:type="AtkFunction"/>
      </field>
    </record>
    <class name="Socket"
           c:symbol-prefix="socket"
           c:type="AtkSocket"
           parent="Object"
           glib:type-name="AtkSocket"
           glib:get-type="atk_socket_get_type"
           glib:type-struct="SocketClass">
      <implements name="Component"/>
      <constructor name="new" c:identifier="atk_socket_new">
        <return-value transfer-ownership="full">
          <type name="Object" c:type="AtkObject*"/>
        </return-value>
      </constructor>
      <virtual-method name="embed" invoker="embed" version="1.30">
        <doc xml:whitespace="preserve">Embeds the children of an #AtkPlug as the children of the #AtkSocket.  The
plug may be in the same process or in a different process.
THe class item used by this function should be filled in by the IPC layer
(ie, at-spi2-atk).  The implementor of the AtkSocket should call this
function and pass the id for the plug as returned by atk_plug_get_id.
It is the responsibility of the application to pass the plug id on to
the process implementing the AtkSocket as needed.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="plug_id" transfer-ownership="none">
            <doc xml:whitespace="preserve">the ID of an #AtkPlug</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="embed" c:identifier="atk_socket_embed" version="1.30">
        <doc xml:whitespace="preserve">Embeds the children of an #AtkPlug as the children of the #AtkSocket.  The
plug may be in the same process or in a different process.
THe class item used by this function should be filled in by the IPC layer
(ie, at-spi2-atk).  The implementor of the AtkSocket should call this
function and pass the id for the plug as returned by atk_plug_get_id.
It is the responsibility of the application to pass the plug id on to
the process implementing the AtkSocket as needed.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="plug_id" transfer-ownership="none">
            <doc xml:whitespace="preserve">the ID of an #AtkPlug</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_occupied"
              c:identifier="atk_socket_is_occupied"
              version="1.30">
        <doc xml:whitespace="preserve">Determines whether or not the socket has an embedded plug.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">TRUE if a plug is embedded in the socket</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </method>
      <field name="parent">
        <type name="Object" c:type="AtkObject"/>
      </field>
      <field name="embedded_plug_id" readable="0" private="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
    </class>
    <record name="SocketClass"
            c:type="AtkSocketClass"
            glib:is-gtype-struct-for="Socket">
      <field name="parent_class">
        <type name="ObjectClass" c:type="AtkObjectClass"/>
      </field>
      <field name="embed">
        <callback name="embed">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="obj" transfer-ownership="none">
              <type name="Socket" c:type="AtkSocket*"/>
            </parameter>
            <parameter name="plug_id" transfer-ownership="none">
              <doc xml:whitespace="preserve">the ID of an #AtkPlug</doc>
              <type name="utf8" c:type="gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <class name="StateSet"
           c:symbol-prefix="state_set"
           c:type="AtkStateSet"
           parent="GObject.Object"
           glib:type-name="AtkStateSet"
           glib:get-type="atk_state_set_get_type"
           glib:type-struct="StateSetClass">
      <constructor name="new" c:identifier="atk_state_set_new">
        <doc xml:whitespace="preserve">Creates a new empty state set.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a new #AtkStateSet</doc>
          <type name="StateSet" c:type="AtkStateSet*"/>
        </return-value>
      </constructor>
      <method name="add_state" c:identifier="atk_state_set_add_state">
        <doc xml:whitespace="preserve">Add a new state for the specified type to the current state set if
it is not already present.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if  the state for @type is not already in @set.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="type" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtkStateType</doc>
            <type name="StateType" c:type="AtkStateType"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_states" c:identifier="atk_state_set_add_states">
        <doc xml:whitespace="preserve">Add the states for the specified types to the current state set.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="types" transfer-ownership="none">
            <doc xml:whitespace="preserve">an array of #AtkStateType</doc>
            <type name="StateType" c:type="AtkStateType*"/>
          </parameter>
          <parameter name="n_types" transfer-ownership="none">
            <doc xml:whitespace="preserve">The number of elements in the array</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="and_sets" c:identifier="atk_state_set_and_sets">
        <doc xml:whitespace="preserve">Constructs the intersection of the two sets, returning %NULL if the
intersection is empty.

the two sets.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a new #AtkStateSet which is the intersection of</doc>
          <type name="StateSet" c:type="AtkStateSet*"/>
        </return-value>
        <parameters>
          <parameter name="compare_set" transfer-ownership="none">
            <doc xml:whitespace="preserve">another #AtkStateSet</doc>
            <type name="StateSet" c:type="AtkStateSet*"/>
          </parameter>
        </parameters>
      </method>
      <method name="clear_states" c:identifier="atk_state_set_clear_states">
        <doc xml:whitespace="preserve">Removes all states from the state set.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <method name="contains_state"
              c:identifier="atk_state_set_contains_state">
        <doc xml:whitespace="preserve">Checks whether the state for the specified type is in the specified set.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if @type is the state type is in @set.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="type" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtkStateType</doc>
            <type name="StateType" c:type="AtkStateType"/>
          </parameter>
        </parameters>
      </method>
      <method name="contains_states"
              c:identifier="atk_state_set_contains_states">
        <doc xml:whitespace="preserve">Checks whether the states for all the specified types are in the 
specified set.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if all the states for @type are in @set.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="types" transfer-ownership="none">
            <doc xml:whitespace="preserve">an array of #AtkStateType</doc>
            <type name="StateType" c:type="AtkStateType*"/>
          </parameter>
          <parameter name="n_types" transfer-ownership="none">
            <doc xml:whitespace="preserve">The number of elements in the array</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_empty" c:identifier="atk_state_set_is_empty">
        <doc xml:whitespace="preserve">Checks whether the state set is empty, i.e. has no states set.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if @set has no states set, otherwise %FALSE</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="or_sets" c:identifier="atk_state_set_or_sets">
        <doc xml:whitespace="preserve">Constructs the union of the two sets.

sets, returning %NULL is empty.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a new #AtkStateSet which is the union of the two</doc>
          <type name="StateSet" c:type="AtkStateSet*"/>
        </return-value>
        <parameters>
          <parameter name="compare_set" transfer-ownership="none">
            <doc xml:whitespace="preserve">another #AtkStateSet</doc>
            <type name="StateSet" c:type="AtkStateSet*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_state" c:identifier="atk_state_set_remove_state">
        <doc xml:whitespace="preserve">Removes the state for the specified type from the state set.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if @type was the state type is in @set.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="type" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtkType</doc>
            <type name="StateType" c:type="AtkStateType"/>
          </parameter>
        </parameters>
      </method>
      <method name="xor_sets" c:identifier="atk_state_set_xor_sets">
        <doc xml:whitespace="preserve">Constructs the exclusive-or of the two sets, returning %NULL is empty.
The set returned by this operation contains the states in exactly
one of the two sets.

which are in exactly one of the two sets.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a new #AtkStateSet which contains the states</doc>
          <type name="StateSet" c:type="AtkStateSet*"/>
        </return-value>
        <parameters>
          <parameter name="compare_set" transfer-ownership="none">
            <doc xml:whitespace="preserve">another #AtkStateSet</doc>
            <type name="StateSet" c:type="AtkStateSet*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="StateSetClass"
            c:type="AtkStateSetClass"
            glib:is-gtype-struct-for="StateSet">
      <field name="parent">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <enumeration name="StateType"
                 glib:type-name="AtkStateType"
                 glib:get-type="atk_state_type_get_type"
                 c:type="AtkStateType">
      <member name="invalid"
              value="0"
              c:identifier="ATK_STATE_INVALID"
              glib:nick="invalid"/>
      <member name="active"
              value="1"
              c:identifier="ATK_STATE_ACTIVE"
              glib:nick="active"/>
      <member name="armed"
              value="2"
              c:identifier="ATK_STATE_ARMED"
              glib:nick="armed"/>
      <member name="busy"
              value="3"
              c:identifier="ATK_STATE_BUSY"
              glib:nick="busy"/>
      <member name="checked"
              value="4"
              c:identifier="ATK_STATE_CHECKED"
              glib:nick="checked"/>
      <member name="defunct"
              value="5"
              c:identifier="ATK_STATE_DEFUNCT"
              glib:nick="defunct"/>
      <member name="editable"
              value="6"
              c:identifier="ATK_STATE_EDITABLE"
              glib:nick="editable"/>
      <member name="enabled"
              value="7"
              c:identifier="ATK_STATE_ENABLED"
              glib:nick="enabled"/>
      <member name="expandable"
              value="8"
              c:identifier="ATK_STATE_EXPANDABLE"
              glib:nick="expandable"/>
      <member name="expanded"
              value="9"
              c:identifier="ATK_STATE_EXPANDED"
              glib:nick="expanded"/>
      <member name="focusable"
              value="10"
              c:identifier="ATK_STATE_FOCUSABLE"
              glib:nick="focusable"/>
      <member name="focused"
              value="11"
              c:identifier="ATK_STATE_FOCUSED"
              glib:nick="focused"/>
      <member name="horizontal"
              value="12"
              c:identifier="ATK_STATE_HORIZONTAL"
              glib:nick="horizontal"/>
      <member name="iconified"
              value="13"
              c:identifier="ATK_STATE_ICONIFIED"
              glib:nick="iconified"/>
      <member name="modal"
              value="14"
              c:identifier="ATK_STATE_MODAL"
              glib:nick="modal"/>
      <member name="multi_line"
              value="15"
              c:identifier="ATK_STATE_MULTI_LINE"
              glib:nick="multi-line"/>
      <member name="multiselectable"
              value="16"
              c:identifier="ATK_STATE_MULTISELECTABLE"
              glib:nick="multiselectable"/>
      <member name="opaque"
              value="17"
              c:identifier="ATK_STATE_OPAQUE"
              glib:nick="opaque"/>
      <member name="pressed"
              value="18"
              c:identifier="ATK_STATE_PRESSED"
              glib:nick="pressed"/>
      <member name="resizable"
              value="19"
              c:identifier="ATK_STATE_RESIZABLE"
              glib:nick="resizable"/>
      <member name="selectable"
              value="20"
              c:identifier="ATK_STATE_SELECTABLE"
              glib:nick="selectable"/>
      <member name="selected"
              value="21"
              c:identifier="ATK_STATE_SELECTED"
              glib:nick="selected"/>
      <member name="sensitive"
              value="22"
              c:identifier="ATK_STATE_SENSITIVE"
              glib:nick="sensitive"/>
      <member name="showing"
              value="23"
              c:identifier="ATK_STATE_SHOWING"
              glib:nick="showing"/>
      <member name="single_line"
              value="24"
              c:identifier="ATK_STATE_SINGLE_LINE"
              glib:nick="single-line"/>
      <member name="stale"
              value="25"
              c:identifier="ATK_STATE_STALE"
              glib:nick="stale"/>
      <member name="transient"
              value="26"
              c:identifier="ATK_STATE_TRANSIENT"
              glib:nick="transient"/>
      <member name="vertical"
              value="27"
              c:identifier="ATK_STATE_VERTICAL"
              glib:nick="vertical"/>
      <member name="visible"
              value="28"
              c:identifier="ATK_STATE_VISIBLE"
              glib:nick="visible"/>
      <member name="manages_descendants"
              value="29"
              c:identifier="ATK_STATE_MANAGES_DESCENDANTS"
              glib:nick="manages-descendants"/>
      <member name="indeterminate"
              value="30"
              c:identifier="ATK_STATE_INDETERMINATE"
              glib:nick="indeterminate"/>
      <member name="truncated"
              value="31"
              c:identifier="ATK_STATE_TRUNCATED"
              glib:nick="truncated"/>
      <member name="required"
              value="32"
              c:identifier="ATK_STATE_REQUIRED"
              glib:nick="required"/>
      <member name="invalid_entry"
              value="33"
              c:identifier="ATK_STATE_INVALID_ENTRY"
              glib:nick="invalid-entry"/>
      <member name="supports_autocompletion"
              value="34"
              c:identifier="ATK_STATE_SUPPORTS_AUTOCOMPLETION"
              glib:nick="supports-autocompletion"/>
      <member name="selectable_text"
              value="35"
              c:identifier="ATK_STATE_SELECTABLE_TEXT"
              glib:nick="selectable-text"/>
      <member name="default"
              value="36"
              c:identifier="ATK_STATE_DEFAULT"
              glib:nick="default"/>
      <member name="animated"
              value="37"
              c:identifier="ATK_STATE_ANIMATED"
              glib:nick="animated"/>
      <member name="visited"
              value="38"
              c:identifier="ATK_STATE_VISITED"
              glib:nick="visited"/>
      <member name="last_defined"
              value="39"
              c:identifier="ATK_STATE_LAST_DEFINED"
              glib:nick="last-defined"/>
      <function name="for_name" c:identifier="atk_state_type_for_name">
        <doc xml:whitespace="preserve">Gets the #AtkStateType corresponding to the description string @name.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an #AtkStateType corresponding to @name</doc>
          <type name="StateType" c:type="AtkStateType"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:whitespace="preserve">a character string state name</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="get_name" c:identifier="atk_state_type_get_name">
        <doc xml:whitespace="preserve">Gets the description string describing the #AtkStateType @type.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the string describing the AtkStateType</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="type" transfer-ownership="none">
            <doc xml:whitespace="preserve">The #AtkStateType whose name is required</doc>
            <type name="StateType" c:type="AtkStateType"/>
          </parameter>
        </parameters>
      </function>
      <function name="register" c:identifier="atk_state_type_register">
        <doc xml:whitespace="preserve">Register a new object state.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an #AtkState value for the new state.</doc>
          <type name="StateType" c:type="AtkStateType"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:whitespace="preserve">a character string describing the new state.</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </function>
    </enumeration>
    <interface name="StreamableContent"
               c:symbol-prefix="streamable_content"
               c:type="AtkStreamableContent"
               glib:type-name="AtkStreamableContent"
               glib:get-type="atk_streamable_content_get_type"
               glib:type-struct="StreamableContentIface">
      <virtual-method name="get_mime_type" invoker="get_mime_type">
        <doc xml:whitespace="preserve">Gets the character string of the specified mime type. The first mime
type is at position 0, the second at position 1, and so on.

Returns : a gchar* representing the specified mime type; the caller
should not free the character string.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="i" transfer-ownership="none">
            <doc xml:whitespace="preserve">a gint representing the position of the mime type starting from 0</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_n_mime_types" invoker="get_n_mime_types">
        <doc xml:whitespace="preserve">Gets the number of mime types supported by this object.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint which is the number of mime types supported by the object.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </virtual-method>
      <virtual-method name="get_stream" invoker="get_stream">
        <doc xml:whitespace="preserve">Gets the content in the specified mime type.

specified mime type.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A #GIOChannel which contains the content in the</doc>
          <type name="GLib.IOChannel" c:type="GIOChannel*"/>
        </return-value>
        <parameters>
          <parameter name="mime_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">a gchar* representing the mime type</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_uri" invoker="get_uri" version="1.12">
        <doc xml:whitespace="preserve">Get a string representing a URI in IETF standard format
(see http://www.ietf.org/rfc/rfc2396.txt) from which the object's content
may be streamed in the specified mime-type, if one is available.
If mime_type is NULL, the URI for the default (and possibly only) mime-type is
returned. 

Note that it is possible for get_uri to return NULL but for
get_stream to work nonetheless, since not all GIOChannels connect to URIs.

can be constructed.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">Returns a string representing a URI, or NULL if no corresponding URI</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="mime_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">a gchar* representing the mime type, or NULL to request a URI for the default mime type.</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_mime_type"
              c:identifier="atk_streamable_content_get_mime_type">
        <doc xml:whitespace="preserve">Gets the character string of the specified mime type. The first mime
type is at position 0, the second at position 1, and so on.

Returns : a gchar* representing the specified mime type; the caller
should not free the character string.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="i" transfer-ownership="none">
            <doc xml:whitespace="preserve">a gint representing the position of the mime type starting from 0</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_n_mime_types"
              c:identifier="atk_streamable_content_get_n_mime_types">
        <doc xml:whitespace="preserve">Gets the number of mime types supported by this object.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint which is the number of mime types supported by the object.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </method>
      <method name="get_stream"
              c:identifier="atk_streamable_content_get_stream">
        <doc xml:whitespace="preserve">Gets the content in the specified mime type.

specified mime type.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A #GIOChannel which contains the content in the</doc>
          <type name="GLib.IOChannel" c:type="GIOChannel*"/>
        </return-value>
        <parameters>
          <parameter name="mime_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">a gchar* representing the mime type</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_uri"
              c:identifier="atk_streamable_content_get_uri"
              version="1.12">
        <doc xml:whitespace="preserve">Get a string representing a URI in IETF standard format
(see http://www.ietf.org/rfc/rfc2396.txt) from which the object's content
may be streamed in the specified mime-type, if one is available.
If mime_type is NULL, the URI for the default (and possibly only) mime-type is
returned. 

Note that it is possible for get_uri to return NULL but for
get_stream to work nonetheless, since not all GIOChannels connect to URIs.

can be constructed.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">Returns a string representing a URI, or NULL if no corresponding URI</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="mime_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">a gchar* representing the mime type, or NULL to request a URI for the default mime type.</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
    </interface>
    <record name="StreamableContentIface"
            c:type="AtkStreamableContentIface"
            glib:is-gtype-struct-for="StreamableContent">
      <field name="parent">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="get_n_mime_types">
        <callback name="get_n_mime_types">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">a gint which is the number of mime types supported by the object.</doc>
            <type name="gint" c:type="gint"/>
          </return-value>
          <parameters>
            <parameter name="streamable" transfer-ownership="none">
              <type name="StreamableContent" c:type="AtkStreamableContent*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_mime_type">
        <callback name="get_mime_type">
          <return-value transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </return-value>
          <parameters>
            <parameter name="streamable" transfer-ownership="none">
              <type name="StreamableContent" c:type="AtkStreamableContent*"/>
            </parameter>
            <parameter name="i" transfer-ownership="none">
              <doc xml:whitespace="preserve">a gint representing the position of the mime type starting from 0</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_stream">
        <callback name="get_stream">
          <return-value transfer-ownership="full">
            <doc xml:whitespace="preserve">A #GIOChannel which contains the content in the</doc>
            <type name="GLib.IOChannel" c:type="GIOChannel*"/>
          </return-value>
          <parameters>
            <parameter name="streamable" transfer-ownership="none">
              <type name="StreamableContent" c:type="AtkStreamableContent*"/>
            </parameter>
            <parameter name="mime_type" transfer-ownership="none">
              <doc xml:whitespace="preserve">a gchar* representing the mime type</doc>
              <type name="utf8" c:type="gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_uri">
        <callback name="get_uri">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">Returns a string representing a URI, or NULL if no corresponding URI</doc>
            <type name="utf8" c:type="gchar*"/>
          </return-value>
          <parameters>
            <parameter name="streamable" transfer-ownership="none">
              <type name="StreamableContent" c:type="AtkStreamableContent*"/>
            </parameter>
            <parameter name="mime_type" transfer-ownership="none">
              <doc xml:whitespace="preserve">a gchar* representing the mime type, or NULL to request a URI for the default mime type.</doc>
              <type name="utf8" c:type="gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="pad1">
        <type name="Function" c:type="AtkFunction"/>
      </field>
      <field name="pad2">
        <type name="Function" c:type="AtkFunction"/>
      </field>
      <field name="pad3">
        <type name="Function" c:type="AtkFunction"/>
      </field>
    </record>
    <interface name="Table"
               c:symbol-prefix="table"
               c:type="AtkTable"
               glib:type-name="AtkTable"
               glib:get-type="atk_table_get_type"
               glib:type-struct="TableIface">
      <virtual-method name="add_column_selection"
                      invoker="add_column_selection">
        <doc xml:whitespace="preserve">Adds the specified @column to the selection. 

the selection, or 0 if value does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gboolean representing if the column was successfully added to</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="column" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="add_row_selection" invoker="add_row_selection">
        <doc xml:whitespace="preserve">Adds the specified @row to the selection. 

or 0 if value does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gboolean representing if row was successfully added to selection,</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="row" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="column_deleted">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="column" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="num_deleted" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="column_inserted">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="column" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="num_inserted" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="column_reordered">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </virtual-method>
      <virtual-method name="get_caption" invoker="get_caption">
        <doc xml:whitespace="preserve">Gets the caption for the @table.

%NULL if value does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a AtkObject* representing the table caption, or</doc>
          <type name="Object" c:type="AtkObject*"/>
        </return-value>
      </virtual-method>
      <virtual-method name="get_column_at_index" invoker="get_column_at_index">
        <doc xml:whitespace="preserve">Gets a #gint representing the column at the specified @index_. 

or -1 if the table does not implement this interface</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint representing the column at the specified index,</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="index_" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing an index in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_column_description"
                      invoker="get_column_description">
        <doc xml:whitespace="preserve">Gets the description text of the specified @column in the table

if value does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gchar* representing the column description, or %NULL</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="column" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_column_extent_at"
                      invoker="get_column_extent_at">
        <doc xml:whitespace="preserve">Gets the number of columns occupied by the accessible object
at the specified @row and @column in the @table.

if value does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint representing the column extent at specified position, or 0</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="row" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_column_header" invoker="get_column_header">
        <doc xml:whitespace="preserve">Gets the column header of a specified column in an accessible table.

header, or %NULL if value does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a AtkObject* representing the specified column</doc>
          <type name="Object" c:type="AtkObject*"/>
        </return-value>
        <parameters>
          <parameter name="column" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a column in the table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_index_at" invoker="get_index_at">
        <doc xml:whitespace="preserve">Gets a #gint representing the index at the specified @row and @column.

The value -1 is returned if the object at row,column is not a child
of table or table does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #gint representing the index at specified position.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="row" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_n_columns" invoker="get_n_columns">
        <doc xml:whitespace="preserve">Gets the number of columns in the table.

if value does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint representing the number of columns, or 0</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </virtual-method>
      <virtual-method name="get_n_rows" invoker="get_n_rows">
        <doc xml:whitespace="preserve">Gets the number of rows in the table.

if value does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint representing the number of rows, or 0</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </virtual-method>
      <virtual-method name="get_row_at_index" invoker="get_row_at_index">
        <doc xml:whitespace="preserve">Gets a #gint representing the row at the specified @index_.

or -1 if the table does not implement this interface</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint representing the row at the specified index,</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="index_" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing an index in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_row_description" invoker="get_row_description">
        <doc xml:whitespace="preserve">Gets the description text of the specified row in the table

if value does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gchar* representing the row description, or %NULL</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="row" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_row_extent_at" invoker="get_row_extent_at">
        <doc xml:whitespace="preserve">Gets the number of rows occupied by the accessible object
at a specified @row and @column in the @table.

if value does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint representing the row extent at specified position, or 0</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="row" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_row_header" invoker="get_row_header">
        <doc xml:whitespace="preserve">Gets the row header of a specified row in an accessible table.

header, or %NULL if value does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a AtkObject* representing the specified row</doc>
          <type name="Object" c:type="AtkObject*"/>
        </return-value>
        <parameters>
          <parameter name="row" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a row in the table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_selected_columns"
                      invoker="get_selected_columns">
        <doc xml:whitespace="preserve">Gets the selected columns of the table by initializing **selected with 
the selected column numbers. This array should be freed by the caller.

or %0 if value does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint representing the number of selected columns,</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="selected" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint** that is to contain the selected columns numbers</doc>
            <type name="gint" c:type="gint**"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_selected_rows" invoker="get_selected_rows">
        <doc xml:whitespace="preserve">Gets the selected rows of the table by initializing **selected with 
the selected row numbers. This array should be freed by the caller.

or zero if value does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint representing the number of selected rows,</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="selected" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint** that is to contain the selected row numbers</doc>
            <type name="gint" c:type="gint**"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_summary" invoker="get_summary">
        <doc xml:whitespace="preserve">Gets the summary description of the table.

of the table, or zero if value does not implement this interface.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a AtkObject* representing a summary description</doc>
          <type name="Object" c:type="AtkObject*"/>
        </return-value>
      </virtual-method>
      <virtual-method name="is_column_selected" invoker="is_column_selected">
        <doc xml:whitespace="preserve">Gets a boolean value indicating whether the specified @column
is selected

if value does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gboolean representing if the column is selected, or 0</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="column" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="is_row_selected" invoker="is_row_selected">
        <doc xml:whitespace="preserve">Gets a boolean value indicating whether the specified @row
is selected

if value does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gboolean representing if the row is selected, or 0</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="row" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="is_selected" invoker="is_selected">
        <doc xml:whitespace="preserve">Gets a boolean value indicating whether the accessible object
at the specified @row and @column is selected

if value does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gboolean representing if the cell is selected, or 0</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="row" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="model_changed">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </virtual-method>
      <virtual-method name="ref_at" invoker="ref_at">
        <doc xml:whitespace="preserve">Get a reference to the table cell at @row, @column.

accessible</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a AtkObject* representing the referred to</doc>
          <type name="Object" c:type="AtkObject*"/>
        </return-value>
        <parameters>
          <parameter name="row" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="remove_column_selection"
                      invoker="remove_column_selection">
        <doc xml:whitespace="preserve">Adds the specified @column to the selection. 

the selection, or 0 if value does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gboolean representing if the column was successfully removed from</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="column" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="remove_row_selection"
                      invoker="remove_row_selection">
        <doc xml:whitespace="preserve">Removes the specified @row from the selection. 

the selection, or 0 if value does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gboolean representing if the row was successfully removed from</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="row" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="row_deleted">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="row" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="num_deleted" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="row_inserted">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="row" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="num_inserted" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="row_reordered">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </virtual-method>
      <virtual-method name="set_caption" invoker="set_caption">
        <doc xml:whitespace="preserve">Sets the caption for the table.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="caption" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #AtkObject representing the caption to set for @table</doc>
            <type name="Object" c:type="AtkObject*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_column_description"
                      invoker="set_column_description">
        <doc xml:whitespace="preserve">Sets the description text for the specified @column of the @table.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="column" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="description" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gchar representing the description text to set for the specified @column of the @table</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_column_header" invoker="set_column_header">
        <doc xml:whitespace="preserve">Sets the specified column header to @header.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="column" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="header" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtkTable</doc>
            <type name="Object" c:type="AtkObject*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_row_description" invoker="set_row_description">
        <doc xml:whitespace="preserve">Sets the description text for the specified @row of @table.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="row" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="description" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gchar representing the description text to set for the specified @row of @table</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_row_header" invoker="set_row_header">
        <doc xml:whitespace="preserve">Sets the specified row header to @header.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="row" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="header" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtkTable</doc>
            <type name="Object" c:type="AtkObject*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_summary" invoker="set_summary">
        <doc xml:whitespace="preserve">Sets the summary description of the table.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="accessible" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtkObject representing the summary description to set for @table</doc>
            <type name="Object" c:type="AtkObject*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="add_column_selection"
              c:identifier="atk_table_add_column_selection">
        <doc xml:whitespace="preserve">Adds the specified @column to the selection. 

the selection, or 0 if value does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gboolean representing if the column was successfully added to</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="column" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_row_selection"
              c:identifier="atk_table_add_row_selection">
        <doc xml:whitespace="preserve">Adds the specified @row to the selection. 

or 0 if value does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gboolean representing if row was successfully added to selection,</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="row" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_caption" c:identifier="atk_table_get_caption">
        <doc xml:whitespace="preserve">Gets the caption for the @table.

%NULL if value does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a AtkObject* representing the table caption, or</doc>
          <type name="Object" c:type="AtkObject*"/>
        </return-value>
      </method>
      <method name="get_column_at_index"
              c:identifier="atk_table_get_column_at_index">
        <doc xml:whitespace="preserve">Gets a #gint representing the column at the specified @index_. 

or -1 if the table does not implement this interface</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint representing the column at the specified index,</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="index_" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing an index in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_column_description"
              c:identifier="atk_table_get_column_description">
        <doc xml:whitespace="preserve">Gets the description text of the specified @column in the table

if value does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gchar* representing the column description, or %NULL</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="column" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_column_extent_at"
              c:identifier="atk_table_get_column_extent_at">
        <doc xml:whitespace="preserve">Gets the number of columns occupied by the accessible object
at the specified @row and @column in the @table.

if value does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint representing the column extent at specified position, or 0</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="row" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_column_header"
              c:identifier="atk_table_get_column_header">
        <doc xml:whitespace="preserve">Gets the column header of a specified column in an accessible table.

header, or %NULL if value does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a AtkObject* representing the specified column</doc>
          <type name="Object" c:type="AtkObject*"/>
        </return-value>
        <parameters>
          <parameter name="column" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a column in the table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_index_at" c:identifier="atk_table_get_index_at">
        <doc xml:whitespace="preserve">Gets a #gint representing the index at the specified @row and @column.

The value -1 is returned if the object at row,column is not a child
of table or table does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #gint representing the index at specified position.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="row" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_n_columns" c:identifier="atk_table_get_n_columns">
        <doc xml:whitespace="preserve">Gets the number of columns in the table.

if value does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint representing the number of columns, or 0</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </method>
      <method name="get_n_rows" c:identifier="atk_table_get_n_rows">
        <doc xml:whitespace="preserve">Gets the number of rows in the table.

if value does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint representing the number of rows, or 0</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </method>
      <method name="get_row_at_index"
              c:identifier="atk_table_get_row_at_index">
        <doc xml:whitespace="preserve">Gets a #gint representing the row at the specified @index_.

or -1 if the table does not implement this interface</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint representing the row at the specified index,</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="index_" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing an index in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_row_description"
              c:identifier="atk_table_get_row_description">
        <doc xml:whitespace="preserve">Gets the description text of the specified row in the table

if value does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gchar* representing the row description, or %NULL</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="row" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_row_extent_at"
              c:identifier="atk_table_get_row_extent_at">
        <doc xml:whitespace="preserve">Gets the number of rows occupied by the accessible object
at a specified @row and @column in the @table.

if value does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint representing the row extent at specified position, or 0</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="row" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_row_header" c:identifier="atk_table_get_row_header">
        <doc xml:whitespace="preserve">Gets the row header of a specified row in an accessible table.

header, or %NULL if value does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a AtkObject* representing the specified row</doc>
          <type name="Object" c:type="AtkObject*"/>
        </return-value>
        <parameters>
          <parameter name="row" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a row in the table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_selected_columns"
              c:identifier="atk_table_get_selected_columns">
        <doc xml:whitespace="preserve">Gets the selected columns of the table by initializing **selected with 
the selected column numbers. This array should be freed by the caller.

or %0 if value does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint representing the number of selected columns,</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="selected" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint** that is to contain the selected columns numbers</doc>
            <type name="gint" c:type="gint**"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_selected_rows"
              c:identifier="atk_table_get_selected_rows">
        <doc xml:whitespace="preserve">Gets the selected rows of the table by initializing **selected with 
the selected row numbers. This array should be freed by the caller.

or zero if value does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint representing the number of selected rows,</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="selected" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint** that is to contain the selected row numbers</doc>
            <type name="gint" c:type="gint**"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_summary" c:identifier="atk_table_get_summary">
        <doc xml:whitespace="preserve">Gets the summary description of the table.

of the table, or zero if value does not implement this interface.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a AtkObject* representing a summary description</doc>
          <type name="Object" c:type="AtkObject*"/>
        </return-value>
      </method>
      <method name="is_column_selected"
              c:identifier="atk_table_is_column_selected">
        <doc xml:whitespace="preserve">Gets a boolean value indicating whether the specified @column
is selected

if value does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gboolean representing if the column is selected, or 0</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="column" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_row_selected" c:identifier="atk_table_is_row_selected">
        <doc xml:whitespace="preserve">Gets a boolean value indicating whether the specified @row
is selected

if value does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gboolean representing if the row is selected, or 0</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="row" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_selected" c:identifier="atk_table_is_selected">
        <doc xml:whitespace="preserve">Gets a boolean value indicating whether the accessible object
at the specified @row and @column is selected

if value does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gboolean representing if the cell is selected, or 0</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="row" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref_at" c:identifier="atk_table_ref_at">
        <doc xml:whitespace="preserve">Get a reference to the table cell at @row, @column.

accessible</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a AtkObject* representing the referred to</doc>
          <type name="Object" c:type="AtkObject*"/>
        </return-value>
        <parameters>
          <parameter name="row" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_column_selection"
              c:identifier="atk_table_remove_column_selection">
        <doc xml:whitespace="preserve">Adds the specified @column to the selection. 

the selection, or 0 if value does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gboolean representing if the column was successfully removed from</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="column" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_row_selection"
              c:identifier="atk_table_remove_row_selection">
        <doc xml:whitespace="preserve">Removes the specified @row from the selection. 

the selection, or 0 if value does not implement this interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gboolean representing if the row was successfully removed from</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="row" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_caption" c:identifier="atk_table_set_caption">
        <doc xml:whitespace="preserve">Sets the caption for the table.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="caption" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #AtkObject representing the caption to set for @table</doc>
            <type name="Object" c:type="AtkObject*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_column_description"
              c:identifier="atk_table_set_column_description">
        <doc xml:whitespace="preserve">Sets the description text for the specified @column of the @table.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="column" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="description" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gchar representing the description text to set for the specified @column of the @table</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_column_header"
              c:identifier="atk_table_set_column_header">
        <doc xml:whitespace="preserve">Sets the specified column header to @header.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="column" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="header" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtkTable</doc>
            <type name="Object" c:type="AtkObject*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_row_description"
              c:identifier="atk_table_set_row_description">
        <doc xml:whitespace="preserve">Sets the description text for the specified @row of @table.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="row" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="description" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gchar representing the description text to set for the specified @row of @table</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_row_header" c:identifier="atk_table_set_row_header">
        <doc xml:whitespace="preserve">Sets the specified row header to @header.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="row" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="header" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtkTable</doc>
            <type name="Object" c:type="AtkObject*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_summary" c:identifier="atk_table_set_summary">
        <doc xml:whitespace="preserve">Sets the summary description of the table.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="accessible" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtkObject representing the summary description to set for @table</doc>
            <type name="Object" c:type="AtkObject*"/>
          </parameter>
        </parameters>
      </method>
      <glib:signal name="column-deleted" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="gint"/>
          </parameter>
          <parameter name="p0" transfer-ownership="none">
            <type name="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="column-inserted" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="gint"/>
          </parameter>
          <parameter name="p0" transfer-ownership="none">
            <type name="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="column-reordered" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
      </glib:signal>
      <glib:signal name="model-changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
      </glib:signal>
      <glib:signal name="row-deleted" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="gint"/>
          </parameter>
          <parameter name="p0" transfer-ownership="none">
            <type name="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="row-inserted" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="gint"/>
          </parameter>
          <parameter name="p0" transfer-ownership="none">
            <type name="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="row-reordered" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
      </glib:signal>
    </interface>
    <record name="TableIface"
            c:type="AtkTableIface"
            glib:is-gtype-struct-for="Table">
      <field name="parent">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="ref_at">
        <callback name="ref_at">
          <return-value transfer-ownership="full">
            <doc xml:whitespace="preserve">a AtkObject* representing the referred to</doc>
            <type name="Object" c:type="AtkObject*"/>
          </return-value>
          <parameters>
            <parameter name="table" transfer-ownership="none">
              <type name="Table" c:type="AtkTable*"/>
            </parameter>
            <parameter name="row" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="column" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_index_at">
        <callback name="get_index_at">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint representing the index at specified position.</doc>
            <type name="gint" c:type="gint"/>
          </return-value>
          <parameters>
            <parameter name="table" transfer-ownership="none">
              <type name="Table" c:type="AtkTable*"/>
            </parameter>
            <parameter name="row" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="column" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_column_at_index">
        <callback name="get_column_at_index">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">a gint representing the column at the specified index,</doc>
            <type name="gint" c:type="gint"/>
          </return-value>
          <parameters>
            <parameter name="table" transfer-ownership="none">
              <type name="Table" c:type="AtkTable*"/>
            </parameter>
            <parameter name="index_" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #gint representing an index in @table</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_row_at_index">
        <callback name="get_row_at_index">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">a gint representing the row at the specified index,</doc>
            <type name="gint" c:type="gint"/>
          </return-value>
          <parameters>
            <parameter name="table" transfer-ownership="none">
              <type name="Table" c:type="AtkTable*"/>
            </parameter>
            <parameter name="index_" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #gint representing an index in @table</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_n_columns">
        <callback name="get_n_columns">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">a gint representing the number of columns, or 0</doc>
            <type name="gint" c:type="gint"/>
          </return-value>
          <parameters>
            <parameter name="table" transfer-ownership="none">
              <type name="Table" c:type="AtkTable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_n_rows">
        <callback name="get_n_rows">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">a gint representing the number of rows, or 0</doc>
            <type name="gint" c:type="gint"/>
          </return-value>
          <parameters>
            <parameter name="table" transfer-ownership="none">
              <type name="Table" c:type="AtkTable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_column_extent_at">
        <callback name="get_column_extent_at">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">a gint representing the column extent at specified position, or 0</doc>
            <type name="gint" c:type="gint"/>
          </return-value>
          <parameters>
            <parameter name="table" transfer-ownership="none">
              <type name="Table" c:type="AtkTable*"/>
            </parameter>
            <parameter name="row" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="column" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_row_extent_at">
        <callback name="get_row_extent_at">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">a gint representing the row extent at specified position, or 0</doc>
            <type name="gint" c:type="gint"/>
          </return-value>
          <parameters>
            <parameter name="table" transfer-ownership="none">
              <type name="Table" c:type="AtkTable*"/>
            </parameter>
            <parameter name="row" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="column" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_caption">
        <callback name="get_caption">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">a AtkObject* representing the table caption, or</doc>
            <type name="Object" c:type="AtkObject*"/>
          </return-value>
          <parameters>
            <parameter name="table" transfer-ownership="none">
              <type name="Table" c:type="AtkTable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_column_description">
        <callback name="get_column_description">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">a gchar* representing the column description, or %NULL</doc>
            <type name="utf8" c:type="gchar*"/>
          </return-value>
          <parameters>
            <parameter name="table" transfer-ownership="none">
              <type name="Table" c:type="AtkTable*"/>
            </parameter>
            <parameter name="column" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_column_header">
        <callback name="get_column_header">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">a AtkObject* representing the specified column</doc>
            <type name="Object" c:type="AtkObject*"/>
          </return-value>
          <parameters>
            <parameter name="table" transfer-ownership="none">
              <type name="Table" c:type="AtkTable*"/>
            </parameter>
            <parameter name="column" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #gint representing a column in the table</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_row_description">
        <callback name="get_row_description">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">a gchar* representing the row description, or %NULL</doc>
            <type name="utf8" c:type="gchar*"/>
          </return-value>
          <parameters>
            <parameter name="table" transfer-ownership="none">
              <type name="Table" c:type="AtkTable*"/>
            </parameter>
            <parameter name="row" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_row_header">
        <callback name="get_row_header">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">a AtkObject* representing the specified row</doc>
            <type name="Object" c:type="AtkObject*"/>
          </return-value>
          <parameters>
            <parameter name="table" transfer-ownership="none">
              <type name="Table" c:type="AtkTable*"/>
            </parameter>
            <parameter name="row" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #gint representing a row in the table</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_summary">
        <callback name="get_summary">
          <return-value transfer-ownership="full">
            <doc xml:whitespace="preserve">a AtkObject* representing a summary description</doc>
            <type name="Object" c:type="AtkObject*"/>
          </return-value>
          <parameters>
            <parameter name="table" transfer-ownership="none">
              <type name="Table" c:type="AtkTable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_caption">
        <callback name="set_caption">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="table" transfer-ownership="none">
              <type name="Table" c:type="AtkTable*"/>
            </parameter>
            <parameter name="caption" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #AtkObject representing the caption to set for @table</doc>
              <type name="Object" c:type="AtkObject*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_column_description">
        <callback name="set_column_description">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="table" transfer-ownership="none">
              <type name="Table" c:type="AtkTable*"/>
            </parameter>
            <parameter name="column" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="description" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #gchar representing the description text to set for the specified @column of the @table</doc>
              <type name="utf8" c:type="gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_column_header">
        <callback name="set_column_header">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="table" transfer-ownership="none">
              <type name="Table" c:type="AtkTable*"/>
            </parameter>
            <parameter name="column" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="header" transfer-ownership="none">
              <doc xml:whitespace="preserve">an #AtkTable</doc>
              <type name="Object" c:type="AtkObject*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_row_description">
        <callback name="set_row_description">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="table" transfer-ownership="none">
              <type name="Table" c:type="AtkTable*"/>
            </parameter>
            <parameter name="row" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="description" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #gchar representing the description text to set for the specified @row of @table</doc>
              <type name="utf8" c:type="gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_row_header">
        <callback name="set_row_header">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="table" transfer-ownership="none">
              <type name="Table" c:type="AtkTable*"/>
            </parameter>
            <parameter name="row" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="header" transfer-ownership="none">
              <doc xml:whitespace="preserve">an #AtkTable</doc>
              <type name="Object" c:type="AtkObject*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_summary">
        <callback name="set_summary">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="table" transfer-ownership="none">
              <type name="Table" c:type="AtkTable*"/>
            </parameter>
            <parameter name="accessible" transfer-ownership="none">
              <doc xml:whitespace="preserve">an #AtkObject representing the summary description to set for @table</doc>
              <type name="Object" c:type="AtkObject*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_selected_columns">
        <callback name="get_selected_columns">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">a gint representing the number of selected columns,</doc>
            <type name="gint" c:type="gint"/>
          </return-value>
          <parameters>
            <parameter name="table" transfer-ownership="none">
              <type name="Table" c:type="AtkTable*"/>
            </parameter>
            <parameter name="selected" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #gint** that is to contain the selected columns numbers</doc>
              <type name="gint" c:type="gint**"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_selected_rows">
        <callback name="get_selected_rows">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">a gint representing the number of selected rows,</doc>
            <type name="gint" c:type="gint"/>
          </return-value>
          <parameters>
            <parameter name="table" transfer-ownership="none">
              <type name="Table" c:type="AtkTable*"/>
            </parameter>
            <parameter name="selected" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #gint** that is to contain the selected row numbers</doc>
              <type name="gint" c:type="gint**"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="is_column_selected">
        <callback name="is_column_selected">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">a gboolean representing if the column is selected, or 0</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="table" transfer-ownership="none">
              <type name="Table" c:type="AtkTable*"/>
            </parameter>
            <parameter name="column" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="is_row_selected">
        <callback name="is_row_selected">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">a gboolean representing if the row is selected, or 0</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="table" transfer-ownership="none">
              <type name="Table" c:type="AtkTable*"/>
            </parameter>
            <parameter name="row" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="is_selected">
        <callback name="is_selected">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">a gboolean representing if the cell is selected, or 0</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="table" transfer-ownership="none">
              <type name="Table" c:type="AtkTable*"/>
            </parameter>
            <parameter name="row" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="column" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="add_row_selection">
        <callback name="add_row_selection">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">a gboolean representing if row was successfully added to selection,</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="table" transfer-ownership="none">
              <type name="Table" c:type="AtkTable*"/>
            </parameter>
            <parameter name="row" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="remove_row_selection">
        <callback name="remove_row_selection">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">a gboolean representing if the row was successfully removed from</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="table" transfer-ownership="none">
              <type name="Table" c:type="AtkTable*"/>
            </parameter>
            <parameter name="row" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #gint representing a row in @table</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="add_column_selection">
        <callback name="add_column_selection">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">a gboolean representing if the column was successfully added to</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="table" transfer-ownership="none">
              <type name="Table" c:type="AtkTable*"/>
            </parameter>
            <parameter name="column" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="remove_column_selection">
        <callback name="remove_column_selection">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">a gboolean representing if the column was successfully removed from</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="table" transfer-ownership="none">
              <type name="Table" c:type="AtkTable*"/>
            </parameter>
            <parameter name="column" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #gint representing a column in @table</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="row_inserted">
        <callback name="row_inserted">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="table" transfer-ownership="none">
              <type name="Table" c:type="AtkTable*"/>
            </parameter>
            <parameter name="row" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="num_inserted" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="column_inserted">
        <callback name="column_inserted">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="table" transfer-ownership="none">
              <type name="Table" c:type="AtkTable*"/>
            </parameter>
            <parameter name="column" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="num_inserted" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="row_deleted">
        <callback name="row_deleted">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="table" transfer-ownership="none">
              <type name="Table" c:type="AtkTable*"/>
            </parameter>
            <parameter name="row" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="num_deleted" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="column_deleted">
        <callback name="column_deleted">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="table" transfer-ownership="none">
              <type name="Table" c:type="AtkTable*"/>
            </parameter>
            <parameter name="column" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="num_deleted" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="row_reordered">
        <callback name="row_reordered">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="table" transfer-ownership="none">
              <type name="Table" c:type="AtkTable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="column_reordered">
        <callback name="column_reordered">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="table" transfer-ownership="none">
              <type name="Table" c:type="AtkTable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="model_changed">
        <callback name="model_changed">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="table" transfer-ownership="none">
              <type name="Table" c:type="AtkTable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="pad1">
        <type name="Function" c:type="AtkFunction"/>
      </field>
      <field name="pad2">
        <type name="Function" c:type="AtkFunction"/>
      </field>
      <field name="pad3">
        <type name="Function" c:type="AtkFunction"/>
      </field>
      <field name="pad4">
        <type name="Function" c:type="AtkFunction"/>
      </field>
    </record>
    <interface name="Text"
               c:symbol-prefix="text"
               c:type="AtkText"
               glib:type-name="AtkText"
               glib:get-type="atk_text_get_type"
               glib:type-struct="TextIface">
      <function name="free_ranges"
                c:identifier="atk_text_free_ranges"
                version="1.3">
        <doc xml:whitespace="preserve">Frees the memory associated with an array of AtkTextRange. It is assumed
that the array was returned by the function atk_text_get_bounded_ranges
and is NULL terminated.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="ranges" transfer-ownership="none">
            <doc xml:whitespace="preserve">A pointer to an array of  #AtkTextRange which is to be freed.</doc>
            <type name="TextRange" c:type="AtkTextRange**"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="add_selection" invoker="add_selection">
        <doc xml:whitespace="preserve">Adds a selection bounded by the specified offsets.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if success, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="start_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">the start position of the selected region</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="end_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">the offset of the first character after the selected region.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_bounded_ranges">
        <return-value transfer-ownership="full">
          <type name="TextRange" c:type="AtkTextRange**"/>
        </return-value>
        <parameters>
          <parameter name="rect" transfer-ownership="none">
            <type name="TextRectangle" c:type="AtkTextRectangle*"/>
          </parameter>
          <parameter name="coord_type" transfer-ownership="none">
            <type name="CoordType" c:type="AtkCoordType"/>
          </parameter>
          <parameter name="x_clip_type" transfer-ownership="none">
            <type name="TextClipType" c:type="AtkTextClipType"/>
          </parameter>
          <parameter name="y_clip_type" transfer-ownership="none">
            <type name="TextClipType" c:type="AtkTextClipType"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_caret_offset" invoker="get_caret_offset">
        <doc xml:whitespace="preserve">Gets the offset position of the caret (cursor).</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the offset position of the caret (cursor).</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </virtual-method>
      <virtual-method name="get_character_at_offset"
                      invoker="get_character_at_offset">
        <doc xml:whitespace="preserve">Gets the specified text.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the character at @offset.</doc>
          <type name="gunichar" c:type="gunichar"/>
        </return-value>
        <parameters>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">position</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_character_count" invoker="get_character_count">
        <doc xml:whitespace="preserve">Gets the character count.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the number of characters.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </virtual-method>
      <virtual-method name="get_character_extents"
                      invoker="get_character_extents">
        <doc xml:whitespace="preserve">Get the bounding box containing the glyph representing the character at 
a particular text offset.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">The offset of the text character for which bounding information is required.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:whitespace="preserve">Pointer for the x cordinate of the bounding box</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:whitespace="preserve">Pointer for the y cordinate of the bounding box</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:whitespace="preserve">Pointer for the width of the bounding box</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:whitespace="preserve">Pointer for the height of the bounding box</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="coords" transfer-ownership="none">
            <doc xml:whitespace="preserve">specify whether coordinates are relative to the screen or widget window</doc>
            <type name="CoordType" c:type="AtkCoordType"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_default_attributes"
                      invoker="get_default_attributes">
        <doc xml:whitespace="preserve">@text: an #AtkText
Creates an #AtkAttributeSet which consists of the default values of
attributes for the text. See the enum AtkTextAttribute for types of text 
attributes that can be returned. Note that other attributes may also be 
returned.

values of attributes.  at @offset. this #atkattributeset should be freed by
a call to atk_attribute_set_free().</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtkAttributeSet which contains the default</doc>
          <type name="AttributeSet" c:type="AtkAttributeSet*"/>
        </return-value>
      </virtual-method>
      <virtual-method name="get_n_selections" invoker="get_n_selections">
        <doc xml:whitespace="preserve">Gets the number of selected regions.

occurred.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">The number of selected regions, or -1 if a failure</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </virtual-method>
      <virtual-method name="get_offset_at_point" invoker="get_offset_at_point">
        <doc xml:whitespace="preserve">Gets the offset of the character located at coordinates @x and @y. @x and @y
are interpreted as being relative to the screen or this widget's window
depending on @coords.

the specified @x and @y coordinates.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the offset to the character which is located at</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="x" transfer-ownership="none">
            <doc xml:whitespace="preserve">screen x-position of character</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:whitespace="preserve">screen y-position of character</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="coords" transfer-ownership="none">
            <doc xml:whitespace="preserve">specify whether coordinates are relative to the screen or widget window</doc>
            <type name="CoordType" c:type="AtkCoordType"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_range_extents"
                      invoker="get_range_extents"
                      version="1.3">
        <doc xml:whitespace="preserve">Get the bounding box for text within the specified range.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="start_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">The offset of the first text character for which boundary information is required.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="end_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">The offset of the text character after the last character for which boundary information is required.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="coord_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">Specify whether coordinates are relative to the screen or widget window.</doc>
            <type name="CoordType" c:type="AtkCoordType"/>
          </parameter>
          <parameter name="rect" transfer-ownership="none">
            <doc xml:whitespace="preserve">A pointer to a AtkTextRectangle which is filled in by this function.</doc>
            <type name="TextRectangle" c:type="AtkTextRectangle*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_run_attributes" invoker="get_run_attributes">
        <doc xml:whitespace="preserve">@text: an #AtkText
@offset: the offset at which to get the attributes, -1 means the offset of
@start_offset: the address to put the start offset of the range
@end_offset: the address to put the end offset of the range
Creates an #AtkAttributeSet which consists of the attributes explicitly
set at the position @offset in the text. @start_offset and @end_offset are
set to the start and end of the range around @offset where the attributes are
invariant. Note that @end_offset is the offset of the first character
after the range.  See the enum AtkTextAttribute for types of text 
attributes that can be returned. Note that other attributes may also be 
returned.

explicitly set at @offset. This #AtkAttributeSet should be freed by a call
to atk_attribute_set_free().</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtkAttributeSet which contains the attributes</doc>
          <type name="AttributeSet" c:type="AtkAttributeSet*"/>
        </return-value>
        <parameters>
          <parameter name="offset" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="start_offset" transfer-ownership="none">
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="end_offset" transfer-ownership="none">
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_selection" invoker="get_selection">
        <doc xml:whitespace="preserve">Gets the text from the specified selection.

to free the returned string.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a newly allocated string containing the selected text. Use g_free()</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="selection_num" transfer-ownership="none">
            <doc xml:whitespace="preserve">The selection number.  The selected regions are assigned numbers that correspond to how far the region is from the start of the text.  The selected region closest to the beginning of the text region is assigned the number 0, etc.  Note that adding, moving or deleting a selected region can change the numbering.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="start_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">passes back the start position of the selected region</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="end_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">passes back the end position of (e.g. offset immediately past) the selected region</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_text" invoker="get_text">
        <doc xml:whitespace="preserve">Gets the specified text.

to, but not including @end_offset. Use g_free() to free the returned string.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a newly allocated string containing the text from @start_offset up</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="start_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">start position</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="end_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">end position</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_text_after_offset"
                      invoker="get_text_after_offset">
        <doc xml:whitespace="preserve">Gets the specified text.

If the boundary_type if ATK_TEXT_BOUNDARY_CHAR the character after the 
offset is returned.

If the boundary_type is ATK_TEXT_BOUNDARY_WORD_START the returned string
is from the word start after the offset to the next word start.

The returned string will contain the word after the offset if the offset 
is inside a word or if the offset is not inside a word.

If the boundary_type is ATK_TEXT_BOUNDARY_WORD_END the returned string
is from the word end at or after the offset to the next work end.

The returned string will contain the word after the offset if the offset
is inside a word and will contain the word after the word after the offset
if the offset is not inside a word.

If the boundary type is ATK_TEXT_BOUNDARY_SENTENCE_START the returned
string is from the sentence start after the offset to the next sentence
start.

The returned string will contain the sentence after the offset if the offset
is inside a sentence or if the offset is not inside a sentence.

If the boundary_type is ATK_TEXT_BOUNDARY_SENTENCE_END the returned string
is from the sentence end at or after the offset to the next sentence end.

The returned string will contain the sentence after the offset if the offset
is inside a sentence and will contain the sentence after the sentence
after the offset if the offset is not inside a sentence.

If the boundary type is ATK_TEXT_BOUNDARY_LINE_START the returned
string is from the line start after the offset to the next line start.

If the boundary_type is ATK_TEXT_BOUNDARY_LINE_END the returned string
is from the line end at or after the offset to the next line end.

by the specified @boundary_type. Use g_free() to free the returned string.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a newly allocated string containing the text after @offset bounded</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">position</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="boundary_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">An #AtkTextBoundary</doc>
            <type name="TextBoundary" c:type="AtkTextBoundary"/>
          </parameter>
          <parameter name="start_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">the start offset of the returned string</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="end_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">the offset of the first character after the returned substring</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_text_at_offset" invoker="get_text_at_offset">
        <doc xml:whitespace="preserve">Gets the specified text.

If the boundary_type if ATK_TEXT_BOUNDARY_CHAR the character at the
offset is returned.

If the boundary_type is ATK_TEXT_BOUNDARY_WORD_START the returned string
is from the word start at or before the offset to the word start after 
the offset.

The returned string will contain the word at the offset if the offset
is inside a word and will contain the word before the offset if the 
offset is not inside a word.

If the boundary_type is ATK_TEXT_BOUNDARY_WORD_END the returned string
is from the word end before the offset to the word end at or after the
offset.

The returned string will contain the word at the offset if the offset
is inside a word and will contain the word after to the offset if the 
offset is not inside a word.

If the boundary type is ATK_TEXT_BOUNDARY_SENTENCE_START the returned
string is from the sentence start at or before the offset to the sentence
start after the offset.

The returned string will contain the sentence at the offset if the offset
is inside a sentence and will contain the sentence before the offset 
if the offset is not inside a sentence.

If the boundary_type is ATK_TEXT_BOUNDARY_SENTENCE_END the returned string
is from the sentence end before the offset to the sentence end at or
after the offset.

The returned string will contain the sentence at the offset if the offset
is inside a sentence and will contain the sentence after the offset 
if the offset is not inside a sentence.

If the boundary type is ATK_TEXT_BOUNDARY_LINE_START the returned
string is from the line start at or before the offset to the line
start after the offset.

If the boundary_type is ATK_TEXT_BOUNDARY_LINE_END the returned string
is from the line end before the offset to the line end at or after
the offset.

the specified @boundary_type. Use g_free() to free the returned string.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a newly allocated string containing the text at @offset bounded by</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">position</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="boundary_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">An #AtkTextBoundary</doc>
            <type name="TextBoundary" c:type="AtkTextBoundary"/>
          </parameter>
          <parameter name="start_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">the start offset of the returned string</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="end_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">the offset of the first character after the returned substring</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_text_before_offset"
                      invoker="get_text_before_offset">
        <doc xml:whitespace="preserve">Gets the specified text.

If the boundary_type if ATK_TEXT_BOUNDARY_CHAR the character before the
offset is returned.

If the boundary_type is ATK_TEXT_BOUNDARY_WORD_START the returned string
is from the word start before the word start before or at the offset to 
the word start before or at the offset.

The returned string will contain the word before the offset if the offset
is inside a word and will contain the word before the word before the 
offset if the offset is not inside a word.

If the boundary_type is ATK_TEXT_BOUNDARY_WORD_END the returned string
is from the word end before the word end before the offset to the word
end before the offset.

The returned string will contain the word before the offset if the offset
is inside a word or if the offset is not inside a word.

If the boundary type is ATK_TEXT_BOUNDARY_SENTENCE_START the returned
string is from the sentence start before the sentence start before 
the offset to the sentence start before the offset.

The returned string will contain the sentence before the offset if the 
offset is inside a sentence and will contain the sentence before the 
sentence before the offset if the offset is not inside a sentence.

If the boundary_type is ATK_TEXT_BOUNDARY_SENTENCE_END the returned string
is from the sentence end before the sentence end at or before the offset to 
the sentence end at or before the offset.

The returned string will contain the sentence before the offset if the 
offset is inside a sentence or if the offset is not inside a sentence.

If the boundary type is ATK_TEXT_BOUNDARY_LINE_START the returned
string is from the line start before the line start ar or before the offset 
to the line start ar or before the offset.

If the boundary_type is ATK_TEXT_BOUNDARY_LINE_END the returned string
is from the line end before the line end before the offset to the 
line end before the offset.

by the specified @boundary_type. Use g_free() to free the returned string.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a newly allocated string containing the text before @offset bounded</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">position</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="boundary_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">An #AtkTextBoundary</doc>
            <type name="TextBoundary" c:type="AtkTextBoundary"/>
          </parameter>
          <parameter name="start_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">the start offset of the returned string</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="end_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">the offset of the first character after the returned substring</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="remove_selection" invoker="remove_selection">
        <doc xml:whitespace="preserve">Removes the specified selection.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if success, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="selection_num" transfer-ownership="none">
            <doc xml:whitespace="preserve">The selection number.  The selected regions are assigned numbers that correspond to how far the region is from the start of the text.  The selected region closest to the beginning of the text region is assigned the number 0, etc.  Note that adding, moving or deleting a selected region can change the numbering.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_caret_offset" invoker="set_caret_offset">
        <doc xml:whitespace="preserve">Sets the caret (cursor) position to the specified @offset.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if success, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">position</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_selection" invoker="set_selection">
        <doc xml:whitespace="preserve">Changes the start and end offset of the specified selection.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if success, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="selection_num" transfer-ownership="none">
            <doc xml:whitespace="preserve">The selection number.  The selected regions are assigned numbers that correspond to how far the region is from the start of the text.  The selected region closest to the beginning of the text region is assigned the number 0, etc.  Note that adding, moving or deleting a selected region can change the numbering.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="start_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">the new start position of the selection</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="end_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">the new end position of (e.g. offset immediately past) the selection</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="text_attributes_changed">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </virtual-method>
      <virtual-method name="text_caret_moved">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="location" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="text_changed">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="position" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="text_selection_changed">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </virtual-method>
      <method name="add_selection" c:identifier="atk_text_add_selection">
        <doc xml:whitespace="preserve">Adds a selection bounded by the specified offsets.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if success, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="start_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">the start position of the selected region</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="end_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">the offset of the first character after the selected region.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_bounded_ranges"
              c:identifier="atk_text_get_bounded_ranges"
              version="1.3">
        <doc xml:whitespace="preserve">Get the ranges of text in the specified bounding box.


element of the array returned by this function will be NULL.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">Array of AtkTextRange. The last</doc>
          <array c:type="AtkTextRange**">
            <type name="TextRange" c:type="AtkTextRange*"/>
          </array>
        </return-value>
        <parameters>
          <parameter name="rect" transfer-ownership="none">
            <doc xml:whitespace="preserve">An AtkTextRectangle giving the dimensions of the bounding box.</doc>
            <type name="TextRectangle" c:type="AtkTextRectangle*"/>
          </parameter>
          <parameter name="coord_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">Specify whether coordinates are relative to the screen or widget window.</doc>
            <type name="CoordType" c:type="AtkCoordType"/>
          </parameter>
          <parameter name="x_clip_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">Specify the horizontal clip type.</doc>
            <type name="TextClipType" c:type="AtkTextClipType"/>
          </parameter>
          <parameter name="y_clip_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">Specify the vertical clip type.</doc>
            <type name="TextClipType" c:type="AtkTextClipType"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_caret_offset" c:identifier="atk_text_get_caret_offset">
        <doc xml:whitespace="preserve">Gets the offset position of the caret (cursor).</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the offset position of the caret (cursor).</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </method>
      <method name="get_character_at_offset"
              c:identifier="atk_text_get_character_at_offset">
        <doc xml:whitespace="preserve">Gets the specified text.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the character at @offset.</doc>
          <type name="gunichar" c:type="gunichar"/>
        </return-value>
        <parameters>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">position</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_character_count"
              c:identifier="atk_text_get_character_count">
        <doc xml:whitespace="preserve">Gets the character count.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the number of characters.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </method>
      <method name="get_character_extents"
              c:identifier="atk_text_get_character_extents">
        <doc xml:whitespace="preserve">Get the bounding box containing the glyph representing the character at 
a particular text offset.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">The offset of the text character for which bounding information is required.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:whitespace="preserve">Pointer for the x cordinate of the bounding box</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:whitespace="preserve">Pointer for the y cordinate of the bounding box</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:whitespace="preserve">Pointer for the width of the bounding box</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:whitespace="preserve">Pointer for the height of the bounding box</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="coords" transfer-ownership="none">
            <doc xml:whitespace="preserve">specify whether coordinates are relative to the screen or widget window</doc>
            <type name="CoordType" c:type="AtkCoordType"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_default_attributes"
              c:identifier="atk_text_get_default_attributes">
        <doc xml:whitespace="preserve">@text: an #AtkText
Creates an #AtkAttributeSet which consists of the default values of
attributes for the text. See the enum AtkTextAttribute for types of text 
attributes that can be returned. Note that other attributes may also be 
returned.

values of attributes.  at @offset. this #atkattributeset should be freed by
a call to atk_attribute_set_free().</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtkAttributeSet which contains the default</doc>
          <type name="AttributeSet" c:type="AtkAttributeSet*"/>
        </return-value>
      </method>
      <method name="get_n_selections" c:identifier="atk_text_get_n_selections">
        <doc xml:whitespace="preserve">Gets the number of selected regions.

occurred.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">The number of selected regions, or -1 if a failure</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </method>
      <method name="get_offset_at_point"
              c:identifier="atk_text_get_offset_at_point">
        <doc xml:whitespace="preserve">Gets the offset of the character located at coordinates @x and @y. @x and @y
are interpreted as being relative to the screen or this widget's window
depending on @coords.

the specified @x and @y coordinates.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the offset to the character which is located at</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="x" transfer-ownership="none">
            <doc xml:whitespace="preserve">screen x-position of character</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:whitespace="preserve">screen y-position of character</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="coords" transfer-ownership="none">
            <doc xml:whitespace="preserve">specify whether coordinates are relative to the screen or widget window</doc>
            <type name="CoordType" c:type="AtkCoordType"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_range_extents"
              c:identifier="atk_text_get_range_extents"
              version="1.3">
        <doc xml:whitespace="preserve">Get the bounding box for text within the specified range.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="start_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">The offset of the first text character for which boundary information is required.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="end_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">The offset of the text character after the last character for which boundary information is required.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="coord_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">Specify whether coordinates are relative to the screen or widget window.</doc>
            <type name="CoordType" c:type="AtkCoordType"/>
          </parameter>
          <parameter name="rect" transfer-ownership="none">
            <doc xml:whitespace="preserve">A pointer to a AtkTextRectangle which is filled in by this function.</doc>
            <type name="TextRectangle" c:type="AtkTextRectangle*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_run_attributes"
              c:identifier="atk_text_get_run_attributes">
        <doc xml:whitespace="preserve">@text: an #AtkText
@offset: the offset at which to get the attributes, -1 means the offset of
@start_offset: the address to put the start offset of the range
@end_offset: the address to put the end offset of the range
Creates an #AtkAttributeSet which consists of the attributes explicitly
set at the position @offset in the text. @start_offset and @end_offset are
set to the start and end of the range around @offset where the attributes are
invariant. Note that @end_offset is the offset of the first character
after the range.  See the enum AtkTextAttribute for types of text 
attributes that can be returned. Note that other attributes may also be 
returned.

explicitly set at @offset. This #AtkAttributeSet should be freed by a call
to atk_attribute_set_free().</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtkAttributeSet which contains the attributes</doc>
          <type name="AttributeSet" c:type="AtkAttributeSet*"/>
        </return-value>
        <parameters>
          <parameter name="offset" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="start_offset" transfer-ownership="none">
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="end_offset" transfer-ownership="none">
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_selection" c:identifier="atk_text_get_selection">
        <doc xml:whitespace="preserve">Gets the text from the specified selection.

to free the returned string.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a newly allocated string containing the selected text. Use g_free()</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="selection_num" transfer-ownership="none">
            <doc xml:whitespace="preserve">The selection number.  The selected regions are assigned numbers that correspond to how far the region is from the start of the text.  The selected region closest to the beginning of the text region is assigned the number 0, etc.  Note that adding, moving or deleting a selected region can change the numbering.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="start_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">passes back the start position of the selected region</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="end_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">passes back the end position of (e.g. offset immediately past) the selected region</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_text" c:identifier="atk_text_get_text">
        <doc xml:whitespace="preserve">Gets the specified text.

to, but not including @end_offset. Use g_free() to free the returned string.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a newly allocated string containing the text from @start_offset up</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="start_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">start position</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="end_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">end position</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_text_after_offset"
              c:identifier="atk_text_get_text_after_offset">
        <doc xml:whitespace="preserve">Gets the specified text.

If the boundary_type if ATK_TEXT_BOUNDARY_CHAR the character after the 
offset is returned.

If the boundary_type is ATK_TEXT_BOUNDARY_WORD_START the returned string
is from the word start after the offset to the next word start.

The returned string will contain the word after the offset if the offset 
is inside a word or if the offset is not inside a word.

If the boundary_type is ATK_TEXT_BOUNDARY_WORD_END the returned string
is from the word end at or after the offset to the next work end.

The returned string will contain the word after the offset if the offset
is inside a word and will contain the word after the word after the offset
if the offset is not inside a word.

If the boundary type is ATK_TEXT_BOUNDARY_SENTENCE_START the returned
string is from the sentence start after the offset to the next sentence
start.

The returned string will contain the sentence after the offset if the offset
is inside a sentence or if the offset is not inside a sentence.

If the boundary_type is ATK_TEXT_BOUNDARY_SENTENCE_END the returned string
is from the sentence end at or after the offset to the next sentence end.

The returned string will contain the sentence after the offset if the offset
is inside a sentence and will contain the sentence after the sentence
after the offset if the offset is not inside a sentence.

If the boundary type is ATK_TEXT_BOUNDARY_LINE_START the returned
string is from the line start after the offset to the next line start.

If the boundary_type is ATK_TEXT_BOUNDARY_LINE_END the returned string
is from the line end at or after the offset to the next line end.

by the specified @boundary_type. Use g_free() to free the returned string.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a newly allocated string containing the text after @offset bounded</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">position</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="boundary_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">An #AtkTextBoundary</doc>
            <type name="TextBoundary" c:type="AtkTextBoundary"/>
          </parameter>
          <parameter name="start_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">the start offset of the returned string</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="end_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">the offset of the first character after the returned substring</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_text_at_offset"
              c:identifier="atk_text_get_text_at_offset">
        <doc xml:whitespace="preserve">Gets the specified text.

If the boundary_type if ATK_TEXT_BOUNDARY_CHAR the character at the
offset is returned.

If the boundary_type is ATK_TEXT_BOUNDARY_WORD_START the returned string
is from the word start at or before the offset to the word start after 
the offset.

The returned string will contain the word at the offset if the offset
is inside a word and will contain the word before the offset if the 
offset is not inside a word.

If the boundary_type is ATK_TEXT_BOUNDARY_WORD_END the returned string
is from the word end before the offset to the word end at or after the
offset.

The returned string will contain the word at the offset if the offset
is inside a word and will contain the word after to the offset if the 
offset is not inside a word.

If the boundary type is ATK_TEXT_BOUNDARY_SENTENCE_START the returned
string is from the sentence start at or before the offset to the sentence
start after the offset.

The returned string will contain the sentence at the offset if the offset
is inside a sentence and will contain the sentence before the offset 
if the offset is not inside a sentence.

If the boundary_type is ATK_TEXT_BOUNDARY_SENTENCE_END the returned string
is from the sentence end before the offset to the sentence end at or
after the offset.

The returned string will contain the sentence at the offset if the offset
is inside a sentence and will contain the sentence after the offset 
if the offset is not inside a sentence.

If the boundary type is ATK_TEXT_BOUNDARY_LINE_START the returned
string is from the line start at or before the offset to the line
start after the offset.

If the boundary_type is ATK_TEXT_BOUNDARY_LINE_END the returned string
is from the line end before the offset to the line end at or after
the offset.

the specified @boundary_type. Use g_free() to free the returned string.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a newly allocated string containing the text at @offset bounded by</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">position</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="boundary_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">An #AtkTextBoundary</doc>
            <type name="TextBoundary" c:type="AtkTextBoundary"/>
          </parameter>
          <parameter name="start_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">the start offset of the returned string</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="end_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">the offset of the first character after the returned substring</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_text_before_offset"
              c:identifier="atk_text_get_text_before_offset">
        <doc xml:whitespace="preserve">Gets the specified text.

If the boundary_type if ATK_TEXT_BOUNDARY_CHAR the character before the
offset is returned.

If the boundary_type is ATK_TEXT_BOUNDARY_WORD_START the returned string
is from the word start before the word start before or at the offset to 
the word start before or at the offset.

The returned string will contain the word before the offset if the offset
is inside a word and will contain the word before the word before the 
offset if the offset is not inside a word.

If the boundary_type is ATK_TEXT_BOUNDARY_WORD_END the returned string
is from the word end before the word end before the offset to the word
end before the offset.

The returned string will contain the word before the offset if the offset
is inside a word or if the offset is not inside a word.

If the boundary type is ATK_TEXT_BOUNDARY_SENTENCE_START the returned
string is from the sentence start before the sentence start before 
the offset to the sentence start before the offset.

The returned string will contain the sentence before the offset if the 
offset is inside a sentence and will contain the sentence before the 
sentence before the offset if the offset is not inside a sentence.

If the boundary_type is ATK_TEXT_BOUNDARY_SENTENCE_END the returned string
is from the sentence end before the sentence end at or before the offset to 
the sentence end at or before the offset.

The returned string will contain the sentence before the offset if the 
offset is inside a sentence or if the offset is not inside a sentence.

If the boundary type is ATK_TEXT_BOUNDARY_LINE_START the returned
string is from the line start before the line start ar or before the offset 
to the line start ar or before the offset.

If the boundary_type is ATK_TEXT_BOUNDARY_LINE_END the returned string
is from the line end before the line end before the offset to the 
line end before the offset.

by the specified @boundary_type. Use g_free() to free the returned string.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a newly allocated string containing the text before @offset bounded</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">position</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="boundary_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">An #AtkTextBoundary</doc>
            <type name="TextBoundary" c:type="AtkTextBoundary"/>
          </parameter>
          <parameter name="start_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">the start offset of the returned string</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="end_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">the offset of the first character after the returned substring</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_selection" c:identifier="atk_text_remove_selection">
        <doc xml:whitespace="preserve">Removes the specified selection.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if success, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="selection_num" transfer-ownership="none">
            <doc xml:whitespace="preserve">The selection number.  The selected regions are assigned numbers that correspond to how far the region is from the start of the text.  The selected region closest to the beginning of the text region is assigned the number 0, etc.  Note that adding, moving or deleting a selected region can change the numbering.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_caret_offset" c:identifier="atk_text_set_caret_offset">
        <doc xml:whitespace="preserve">Sets the caret (cursor) position to the specified @offset.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if success, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">position</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_selection" c:identifier="atk_text_set_selection">
        <doc xml:whitespace="preserve">Changes the start and end offset of the specified selection.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if success, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="selection_num" transfer-ownership="none">
            <doc xml:whitespace="preserve">The selection number.  The selected regions are assigned numbers that correspond to how far the region is from the start of the text.  The selected region closest to the beginning of the text region is assigned the number 0, etc.  Note that adding, moving or deleting a selected region can change the numbering.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="start_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">the new start position of the selection</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="end_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">the new end position of (e.g. offset immediately past) the selection</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <glib:signal name="text-attributes-changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
      </glib:signal>
      <glib:signal name="text-caret-moved" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="text-changed" when="last" detailed="1">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="gint"/>
          </parameter>
          <parameter name="p0" transfer-ownership="none">
            <type name="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="text-insert" when="last" detailed="1">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="gint"/>
          </parameter>
          <parameter name="p0" transfer-ownership="none">
            <type name="gint"/>
          </parameter>
          <parameter name="p1" transfer-ownership="none">
            <type name="utf8"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="text-remove" when="last" detailed="1">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="gint"/>
          </parameter>
          <parameter name="p0" transfer-ownership="none">
            <type name="gint"/>
          </parameter>
          <parameter name="p1" transfer-ownership="none">
            <type name="utf8"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="text-selection-changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
      </glib:signal>
      <glib:signal name="text-update" when="last" detailed="1">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="gint"/>
          </parameter>
          <parameter name="p0" transfer-ownership="none">
            <type name="gint"/>
          </parameter>
          <parameter name="p1" transfer-ownership="none">
            <type name="gint"/>
          </parameter>
          <parameter name="p2" transfer-ownership="none">
            <type name="utf8"/>
          </parameter>
        </parameters>
      </glib:signal>
    </interface>
    <enumeration name="TextAttribute"
                 glib:type-name="AtkTextAttribute"
                 glib:get-type="atk_text_attribute_get_type"
                 c:type="AtkTextAttribute">
      <member name="invalid"
              value="0"
              c:identifier="ATK_TEXT_ATTR_INVALID"
              glib:nick="invalid"/>
      <member name="left_margin"
              value="1"
              c:identifier="ATK_TEXT_ATTR_LEFT_MARGIN"
              glib:nick="left-margin"/>
      <member name="right_margin"
              value="2"
              c:identifier="ATK_TEXT_ATTR_RIGHT_MARGIN"
              glib:nick="right-margin"/>
      <member name="indent"
              value="3"
              c:identifier="ATK_TEXT_ATTR_INDENT"
              glib:nick="indent"/>
      <member name="invisible"
              value="4"
              c:identifier="ATK_TEXT_ATTR_INVISIBLE"
              glib:nick="invisible"/>
      <member name="editable"
              value="5"
              c:identifier="ATK_TEXT_ATTR_EDITABLE"
              glib:nick="editable"/>
      <member name="pixels_above_lines"
              value="6"
              c:identifier="ATK_TEXT_ATTR_PIXELS_ABOVE_LINES"
              glib:nick="pixels-above-lines"/>
      <member name="pixels_below_lines"
              value="7"
              c:identifier="ATK_TEXT_ATTR_PIXELS_BELOW_LINES"
              glib:nick="pixels-below-lines"/>
      <member name="pixels_inside_wrap"
              value="8"
              c:identifier="ATK_TEXT_ATTR_PIXELS_INSIDE_WRAP"
              glib:nick="pixels-inside-wrap"/>
      <member name="bg_full_height"
              value="9"
              c:identifier="ATK_TEXT_ATTR_BG_FULL_HEIGHT"
              glib:nick="bg-full-height"/>
      <member name="rise"
              value="10"
              c:identifier="ATK_TEXT_ATTR_RISE"
              glib:nick="rise"/>
      <member name="underline"
              value="11"
              c:identifier="ATK_TEXT_ATTR_UNDERLINE"
              glib:nick="underline"/>
      <member name="strikethrough"
              value="12"
              c:identifier="ATK_TEXT_ATTR_STRIKETHROUGH"
              glib:nick="strikethrough"/>
      <member name="size"
              value="13"
              c:identifier="ATK_TEXT_ATTR_SIZE"
              glib:nick="size"/>
      <member name="scale"
              value="14"
              c:identifier="ATK_TEXT_ATTR_SCALE"
              glib:nick="scale"/>
      <member name="weight"
              value="15"
              c:identifier="ATK_TEXT_ATTR_WEIGHT"
              glib:nick="weight"/>
      <member name="language"
              value="16"
              c:identifier="ATK_TEXT_ATTR_LANGUAGE"
              glib:nick="language"/>
      <member name="family_name"
              value="17"
              c:identifier="ATK_TEXT_ATTR_FAMILY_NAME"
              glib:nick="family-name"/>
      <member name="bg_color"
              value="18"
              c:identifier="ATK_TEXT_ATTR_BG_COLOR"
              glib:nick="bg-color"/>
      <member name="fg_color"
              value="19"
              c:identifier="ATK_TEXT_ATTR_FG_COLOR"
              glib:nick="fg-color"/>
      <member name="bg_stipple"
              value="20"
              c:identifier="ATK_TEXT_ATTR_BG_STIPPLE"
              glib:nick="bg-stipple"/>
      <member name="fg_stipple"
              value="21"
              c:identifier="ATK_TEXT_ATTR_FG_STIPPLE"
              glib:nick="fg-stipple"/>
      <member name="wrap_mode"
              value="22"
              c:identifier="ATK_TEXT_ATTR_WRAP_MODE"
              glib:nick="wrap-mode"/>
      <member name="direction"
              value="23"
              c:identifier="ATK_TEXT_ATTR_DIRECTION"
              glib:nick="direction"/>
      <member name="justification"
              value="24"
              c:identifier="ATK_TEXT_ATTR_JUSTIFICATION"
              glib:nick="justification"/>
      <member name="stretch"
              value="25"
              c:identifier="ATK_TEXT_ATTR_STRETCH"
              glib:nick="stretch"/>
      <member name="variant"
              value="26"
              c:identifier="ATK_TEXT_ATTR_VARIANT"
              glib:nick="variant"/>
      <member name="style"
              value="27"
              c:identifier="ATK_TEXT_ATTR_STYLE"
              glib:nick="style"/>
      <member name="last_defined"
              value="28"
              c:identifier="ATK_TEXT_ATTR_LAST_DEFINED"
              glib:nick="last-defined"/>
      <function name="for_name" c:identifier="atk_text_attribute_for_name">
        <doc xml:whitespace="preserve">Get the #AtkTextAttribute type corresponding to a text attribute name.

or #ATK_TEXT_ATTRIBUTE_INVALID if no matching text attribute is found.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the #AtkTextAttribute enumerated type corresponding to the specified</doc>
          <type name="TextAttribute" c:type="AtkTextAttribute"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:whitespace="preserve">a string which is the (non-localized) name of an ATK text attribute.</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="get_name" c:identifier="atk_text_attribute_get_name">
        <doc xml:whitespace="preserve">Gets the name corresponding to the #AtkTextAttribute</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a string containing the name; this string should not be freed</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="attr" transfer-ownership="none">
            <doc xml:whitespace="preserve">The #AtkTextAttribute whose name is required</doc>
            <type name="TextAttribute" c:type="AtkTextAttribute"/>
          </parameter>
        </parameters>
      </function>
      <function name="get_value" c:identifier="atk_text_attribute_get_value">
        <doc xml:whitespace="preserve">Gets the value for the index of the #AtkTextAttribute

NULL is returned if there are no values maintained for the attr value.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a string containing the value; this string should not be freed;</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="attr" transfer-ownership="none">
            <doc xml:whitespace="preserve">The #AtkTextAttribute for which a value is required</doc>
            <type name="TextAttribute" c:type="AtkTextAttribute"/>
          </parameter>
          <parameter name="index_" transfer-ownership="none">
            <doc xml:whitespace="preserve">The index of the required value</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </function>
      <function name="register" c:identifier="atk_text_attribute_register">
        <doc xml:whitespace="preserve">Associate @name with a new #AtkTextAttribute</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an #AtkTextAttribute associated with @name</doc>
          <type name="TextAttribute" c:type="AtkTextAttribute"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:whitespace="preserve">a name string</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </function>
    </enumeration>
    <enumeration name="TextBoundary"
                 glib:type-name="AtkTextBoundary"
                 glib:get-type="atk_text_boundary_get_type"
                 c:type="AtkTextBoundary">
      <member name="char"
              value="0"
              c:identifier="ATK_TEXT_BOUNDARY_CHAR"
              glib:nick="char"/>
      <member name="word_start"
              value="1"
              c:identifier="ATK_TEXT_BOUNDARY_WORD_START"
              glib:nick="word-start"/>
      <member name="word_end"
              value="2"
              c:identifier="ATK_TEXT_BOUNDARY_WORD_END"
              glib:nick="word-end"/>
      <member name="sentence_start"
              value="3"
              c:identifier="ATK_TEXT_BOUNDARY_SENTENCE_START"
              glib:nick="sentence-start"/>
      <member name="sentence_end"
              value="4"
              c:identifier="ATK_TEXT_BOUNDARY_SENTENCE_END"
              glib:nick="sentence-end"/>
      <member name="line_start"
              value="5"
              c:identifier="ATK_TEXT_BOUNDARY_LINE_START"
              glib:nick="line-start"/>
      <member name="line_end"
              value="6"
              c:identifier="ATK_TEXT_BOUNDARY_LINE_END"
              glib:nick="line-end"/>
    </enumeration>
    <enumeration name="TextClipType"
                 glib:type-name="AtkTextClipType"
                 glib:get-type="atk_text_clip_type_get_type"
                 c:type="AtkTextClipType">
      <member name="none"
              value="0"
              c:identifier="ATK_TEXT_CLIP_NONE"
              glib:nick="none"/>
      <member name="min"
              value="1"
              c:identifier="ATK_TEXT_CLIP_MIN"
              glib:nick="min"/>
      <member name="max"
              value="2"
              c:identifier="ATK_TEXT_CLIP_MAX"
              glib:nick="max"/>
      <member name="both"
              value="3"
              c:identifier="ATK_TEXT_CLIP_BOTH"
              glib:nick="both"/>
    </enumeration>
    <record name="TextIface"
            c:type="AtkTextIface"
            glib:is-gtype-struct-for="Text">
      <field name="parent">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="get_text">
        <callback name="get_text">
          <return-value transfer-ownership="full">
            <doc xml:whitespace="preserve">a newly allocated string containing the text from @start_offset up</doc>
            <type name="utf8" c:type="gchar*"/>
          </return-value>
          <parameters>
            <parameter name="text" transfer-ownership="none">
              <type name="Text" c:type="AtkText*"/>
            </parameter>
            <parameter name="start_offset" transfer-ownership="none">
              <doc xml:whitespace="preserve">start position</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="end_offset" transfer-ownership="none">
              <doc xml:whitespace="preserve">end position</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_text_after_offset">
        <callback name="get_text_after_offset">
          <return-value transfer-ownership="full">
            <doc xml:whitespace="preserve">a newly allocated string containing the text after @offset bounded</doc>
            <type name="utf8" c:type="gchar*"/>
          </return-value>
          <parameters>
            <parameter name="text" transfer-ownership="none">
              <type name="Text" c:type="AtkText*"/>
            </parameter>
            <parameter name="offset" transfer-ownership="none">
              <doc xml:whitespace="preserve">position</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="boundary_type" transfer-ownership="none">
              <doc xml:whitespace="preserve">An #AtkTextBoundary</doc>
              <type name="TextBoundary" c:type="AtkTextBoundary"/>
            </parameter>
            <parameter name="start_offset" transfer-ownership="none">
              <doc xml:whitespace="preserve">the start offset of the returned string</doc>
              <type name="gint" c:type="gint*"/>
            </parameter>
            <parameter name="end_offset" transfer-ownership="none">
              <doc xml:whitespace="preserve">the offset of the first character after the returned substring</doc>
              <type name="gint" c:type="gint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_text_at_offset">
        <callback name="get_text_at_offset">
          <return-value transfer-ownership="full">
            <doc xml:whitespace="preserve">a newly allocated string containing the text at @offset bounded by</doc>
            <type name="utf8" c:type="gchar*"/>
          </return-value>
          <parameters>
            <parameter name="text" transfer-ownership="none">
              <type name="Text" c:type="AtkText*"/>
            </parameter>
            <parameter name="offset" transfer-ownership="none">
              <doc xml:whitespace="preserve">position</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="boundary_type" transfer-ownership="none">
              <doc xml:whitespace="preserve">An #AtkTextBoundary</doc>
              <type name="TextBoundary" c:type="AtkTextBoundary"/>
            </parameter>
            <parameter name="start_offset" transfer-ownership="none">
              <doc xml:whitespace="preserve">the start offset of the returned string</doc>
              <type name="gint" c:type="gint*"/>
            </parameter>
            <parameter name="end_offset" transfer-ownership="none">
              <doc xml:whitespace="preserve">the offset of the first character after the returned substring</doc>
              <type name="gint" c:type="gint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_character_at_offset">
        <callback name="get_character_at_offset">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">the character at @offset.</doc>
            <type name="gunichar" c:type="gunichar"/>
          </return-value>
          <parameters>
            <parameter name="text" transfer-ownership="none">
              <type name="Text" c:type="AtkText*"/>
            </parameter>
            <parameter name="offset" transfer-ownership="none">
              <doc xml:whitespace="preserve">position</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_text_before_offset">
        <callback name="get_text_before_offset">
          <return-value transfer-ownership="full">
            <doc xml:whitespace="preserve">a newly allocated string containing the text before @offset bounded</doc>
            <type name="utf8" c:type="gchar*"/>
          </return-value>
          <parameters>
            <parameter name="text" transfer-ownership="none">
              <type name="Text" c:type="AtkText*"/>
            </parameter>
            <parameter name="offset" transfer-ownership="none">
              <doc xml:whitespace="preserve">position</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="boundary_type" transfer-ownership="none">
              <doc xml:whitespace="preserve">An #AtkTextBoundary</doc>
              <type name="TextBoundary" c:type="AtkTextBoundary"/>
            </parameter>
            <parameter name="start_offset" transfer-ownership="none">
              <doc xml:whitespace="preserve">the start offset of the returned string</doc>
              <type name="gint" c:type="gint*"/>
            </parameter>
            <parameter name="end_offset" transfer-ownership="none">
              <doc xml:whitespace="preserve">the offset of the first character after the returned substring</doc>
              <type name="gint" c:type="gint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_caret_offset">
        <callback name="get_caret_offset">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">the offset position of the caret (cursor).</doc>
            <type name="gint" c:type="gint"/>
          </return-value>
          <parameters>
            <parameter name="text" transfer-ownership="none">
              <type name="Text" c:type="AtkText*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_run_attributes">
        <callback name="get_run_attributes">
          <return-value transfer-ownership="full">
            <doc xml:whitespace="preserve">an #AtkAttributeSet which contains the attributes</doc>
            <type name="AttributeSet" c:type="AtkAttributeSet*"/>
          </return-value>
          <parameters>
            <parameter name="text" transfer-ownership="none">
              <type name="Text" c:type="AtkText*"/>
            </parameter>
            <parameter name="offset" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="start_offset" transfer-ownership="none">
              <type name="gint" c:type="gint*"/>
            </parameter>
            <parameter name="end_offset" transfer-ownership="none">
              <type name="gint" c:type="gint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_default_attributes">
        <callback name="get_default_attributes">
          <return-value transfer-ownership="full">
            <doc xml:whitespace="preserve">an #AtkAttributeSet which contains the default</doc>
            <type name="AttributeSet" c:type="AtkAttributeSet*"/>
          </return-value>
          <parameters>
            <parameter name="text" transfer-ownership="none">
              <type name="Text" c:type="AtkText*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_character_extents">
        <callback name="get_character_extents">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="text" transfer-ownership="none">
              <type name="Text" c:type="AtkText*"/>
            </parameter>
            <parameter name="offset" transfer-ownership="none">
              <doc xml:whitespace="preserve">The offset of the text character for which bounding information is required.</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="x" transfer-ownership="none">
              <doc xml:whitespace="preserve">Pointer for the x cordinate of the bounding box</doc>
              <type name="gint" c:type="gint*"/>
            </parameter>
            <parameter name="y" transfer-ownership="none">
              <doc xml:whitespace="preserve">Pointer for the y cordinate of the bounding box</doc>
              <type name="gint" c:type="gint*"/>
            </parameter>
            <parameter name="width" transfer-ownership="none">
              <doc xml:whitespace="preserve">Pointer for the width of the bounding box</doc>
              <type name="gint" c:type="gint*"/>
            </parameter>
            <parameter name="height" transfer-ownership="none">
              <doc xml:whitespace="preserve">Pointer for the height of the bounding box</doc>
              <type name="gint" c:type="gint*"/>
            </parameter>
            <parameter name="coords" transfer-ownership="none">
              <doc xml:whitespace="preserve">specify whether coordinates are relative to the screen or widget window</doc>
              <type name="CoordType" c:type="AtkCoordType"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_character_count">
        <callback name="get_character_count">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">the number of characters.</doc>
            <type name="gint" c:type="gint"/>
          </return-value>
          <parameters>
            <parameter name="text" transfer-ownership="none">
              <type name="Text" c:type="AtkText*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_offset_at_point">
        <callback name="get_offset_at_point">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">the offset to the character which is located at</doc>
            <type name="gint" c:type="gint"/>
          </return-value>
          <parameters>
            <parameter name="text" transfer-ownership="none">
              <type name="Text" c:type="AtkText*"/>
            </parameter>
            <parameter name="x" transfer-ownership="none">
              <doc xml:whitespace="preserve">screen x-position of character</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="y" transfer-ownership="none">
              <doc xml:whitespace="preserve">screen y-position of character</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="coords" transfer-ownership="none">
              <doc xml:whitespace="preserve">specify whether coordinates are relative to the screen or widget window</doc>
              <type name="CoordType" c:type="AtkCoordType"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_n_selections">
        <callback name="get_n_selections">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">The number of selected regions, or -1 if a failure</doc>
            <type name="gint" c:type="gint"/>
          </return-value>
          <parameters>
            <parameter name="text" transfer-ownership="none">
              <type name="Text" c:type="AtkText*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_selection">
        <callback name="get_selection">
          <return-value transfer-ownership="full">
            <doc xml:whitespace="preserve">a newly allocated string containing the selected text. Use g_free()</doc>
            <type name="utf8" c:type="gchar*"/>
          </return-value>
          <parameters>
            <parameter name="text" transfer-ownership="none">
              <type name="Text" c:type="AtkText*"/>
            </parameter>
            <parameter name="selection_num" transfer-ownership="none">
              <doc xml:whitespace="preserve">The selection number.  The selected regions are assigned numbers that correspond to how far the region is from the start of the text.  The selected region closest to the beginning of the text region is assigned the number 0, etc.  Note that adding, moving or deleting a selected region can change the numbering.</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="start_offset" transfer-ownership="none">
              <doc xml:whitespace="preserve">passes back the start position of the selected region</doc>
              <type name="gint" c:type="gint*"/>
            </parameter>
            <parameter name="end_offset" transfer-ownership="none">
              <doc xml:whitespace="preserve">passes back the end position of (e.g. offset immediately past) the selected region</doc>
              <type name="gint" c:type="gint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="add_selection">
        <callback name="add_selection">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">%TRUE if success, %FALSE otherwise</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="text" transfer-ownership="none">
              <type name="Text" c:type="AtkText*"/>
            </parameter>
            <parameter name="start_offset" transfer-ownership="none">
              <doc xml:whitespace="preserve">the start position of the selected region</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="end_offset" transfer-ownership="none">
              <doc xml:whitespace="preserve">the offset of the first character after the selected region.</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="remove_selection">
        <callback name="remove_selection">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">%TRUE if success, %FALSE otherwise</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="text" transfer-ownership="none">
              <type name="Text" c:type="AtkText*"/>
            </parameter>
            <parameter name="selection_num" transfer-ownership="none">
              <doc xml:whitespace="preserve">The selection number.  The selected regions are assigned numbers that correspond to how far the region is from the start of the text.  The selected region closest to the beginning of the text region is assigned the number 0, etc.  Note that adding, moving or deleting a selected region can change the numbering.</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_selection">
        <callback name="set_selection">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">%TRUE if success, %FALSE otherwise</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="text" transfer-ownership="none">
              <type name="Text" c:type="AtkText*"/>
            </parameter>
            <parameter name="selection_num" transfer-ownership="none">
              <doc xml:whitespace="preserve">The selection number.  The selected regions are assigned numbers that correspond to how far the region is from the start of the text.  The selected region closest to the beginning of the text region is assigned the number 0, etc.  Note that adding, moving or deleting a selected region can change the numbering.</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="start_offset" transfer-ownership="none">
              <doc xml:whitespace="preserve">the new start position of the selection</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="end_offset" transfer-ownership="none">
              <doc xml:whitespace="preserve">the new end position of (e.g. offset immediately past) the selection</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_caret_offset">
        <callback name="set_caret_offset">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">%TRUE if success, %FALSE otherwise.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="text" transfer-ownership="none">
              <type name="Text" c:type="AtkText*"/>
            </parameter>
            <parameter name="offset" transfer-ownership="none">
              <doc xml:whitespace="preserve">position</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="text_changed">
        <callback name="text_changed">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="text" transfer-ownership="none">
              <type name="Text" c:type="AtkText*"/>
            </parameter>
            <parameter name="position" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="length" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="text_caret_moved">
        <callback name="text_caret_moved">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="text" transfer-ownership="none">
              <type name="Text" c:type="AtkText*"/>
            </parameter>
            <parameter name="location" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="text_selection_changed">
        <callback name="text_selection_changed">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="text" transfer-ownership="none">
              <type name="Text" c:type="AtkText*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="text_attributes_changed">
        <callback name="text_attributes_changed">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="text" transfer-ownership="none">
              <type name="Text" c:type="AtkText*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_range_extents">
        <callback name="get_range_extents">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="text" transfer-ownership="none">
              <type name="Text" c:type="AtkText*"/>
            </parameter>
            <parameter name="start_offset" transfer-ownership="none">
              <doc xml:whitespace="preserve">The offset of the first text character for which boundary information is required.</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="end_offset" transfer-ownership="none">
              <doc xml:whitespace="preserve">The offset of the text character after the last character for which boundary information is required.</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="coord_type" transfer-ownership="none">
              <doc xml:whitespace="preserve">Specify whether coordinates are relative to the screen or widget window.</doc>
              <type name="CoordType" c:type="AtkCoordType"/>
            </parameter>
            <parameter name="rect" transfer-ownership="none">
              <doc xml:whitespace="preserve">A pointer to a AtkTextRectangle which is filled in by this function.</doc>
              <type name="TextRectangle" c:type="AtkTextRectangle*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_bounded_ranges">
        <callback name="get_bounded_ranges">
          <return-value transfer-ownership="full">
            <type name="TextRange" c:type="AtkTextRange**"/>
          </return-value>
          <parameters>
            <parameter name="text" transfer-ownership="none">
              <type name="Text" c:type="AtkText*"/>
            </parameter>
            <parameter name="rect" transfer-ownership="none">
              <type name="TextRectangle" c:type="AtkTextRectangle*"/>
            </parameter>
            <parameter name="coord_type" transfer-ownership="none">
              <type name="CoordType" c:type="AtkCoordType"/>
            </parameter>
            <parameter name="x_clip_type" transfer-ownership="none">
              <type name="TextClipType" c:type="AtkTextClipType"/>
            </parameter>
            <parameter name="y_clip_type" transfer-ownership="none">
              <type name="TextClipType" c:type="AtkTextClipType"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="pad4">
        <type name="Function" c:type="AtkFunction"/>
      </field>
    </record>
    <record name="TextRange"
            c:type="AtkTextRange"
            glib:type-name="AtkTextRange"
            glib:get-type="atk_text_range_get_type"
            c:symbol-prefix="text_range">
      <doc xml:whitespace="preserve">A structure used to describe a text range.</doc>
      <field name="bounds" writable="1">
        <type name="TextRectangle" c:type="AtkTextRectangle"/>
      </field>
      <field name="start_offset" writable="1">
        <type name="gint" c:type="gint"/>
      </field>
      <field name="end_offset" writable="1">
        <type name="gint" c:type="gint"/>
      </field>
      <field name="content" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
    </record>
    <record name="TextRectangle" c:type="AtkTextRectangle">
      <doc xml:whitespace="preserve">A structure used to store a rectangle used by AtkText.</doc>
      <field name="x" writable="1">
        <type name="gint" c:type="gint"/>
      </field>
      <field name="y" writable="1">
        <type name="gint" c:type="gint"/>
      </field>
      <field name="width" writable="1">
        <type name="gint" c:type="gint"/>
      </field>
      <field name="height" writable="1">
        <type name="gint" c:type="gint"/>
      </field>
    </record>
    <class name="Util"
           c:symbol-prefix="util"
           c:type="AtkUtil"
           parent="GObject.Object"
           glib:type-name="AtkUtil"
           glib:get-type="atk_util_get_type"
           glib:type-struct="UtilClass">
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="UtilClass"
            c:type="AtkUtilClass"
            glib:is-gtype-struct-for="Util">
      <field name="parent">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="add_global_event_listener" introspectable="0">
        <callback name="add_global_event_listener" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </return-value>
          <parameters>
            <parameter name="listener" transfer-ownership="none">
              <type name="GObject.SignalEmissionHook"
                    c:type="GSignalEmissionHook"/>
            </parameter>
            <parameter name="event_type" transfer-ownership="none">
              <type name="utf8" c:type="gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="remove_global_event_listener">
        <callback name="remove_global_event_listener">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="listener_id" transfer-ownership="none">
              <type name="guint" c:type="guint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="add_key_event_listener" introspectable="0">
        <callback name="add_key_event_listener" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </return-value>
          <parameters>
            <parameter name="listener" transfer-ownership="none" closure="1">
              <type name="KeySnoopFunc" c:type="AtkKeySnoopFunc"/>
            </parameter>
            <parameter name="data" transfer-ownership="none">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="remove_key_event_listener">
        <callback name="remove_key_event_listener">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="listener_id" transfer-ownership="none">
              <type name="guint" c:type="guint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_root" introspectable="0">
        <callback name="get_root" introspectable="0">
          <return-value>
            <type name="Object" c:type="AtkObject*"/>
          </return-value>
        </callback>
      </field>
      <field name="get_toolkit_name">
        <callback name="get_toolkit_name">
          <return-value transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </return-value>
        </callback>
      </field>
      <field name="get_toolkit_version">
        <callback name="get_toolkit_version">
          <return-value transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </return-value>
        </callback>
      </field>
    </record>
    <interface name="Value"
               c:symbol-prefix="value"
               c:type="AtkValue"
               glib:type-name="AtkValue"
               glib:get-type="atk_value_get_type"
               glib:type-struct="ValueIface">
      <virtual-method name="get_current_value" invoker="get_current_value">
        <doc xml:whitespace="preserve">Gets the value of this object.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="value" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #GValue representing the current accessible value</doc>
            <type name="GObject.Value" c:type="GValue*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_maximum_value" invoker="get_maximum_value">
        <doc xml:whitespace="preserve">Gets the maximum value of this object.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="value" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #GValue representing the maximum accessible value</doc>
            <type name="GObject.Value" c:type="GValue*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_minimum_increment"
                      invoker="get_minimum_increment"
                      version="1.12">
        <doc xml:whitespace="preserve">Gets the minimum increment by which the value of this object may be changed.  If zero,
the minimum increment is undefined, which may mean that it is limited only by the 
floating point precision of the platform.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="value" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #GValue representing the minimum increment by which the accessible value may be changed</doc>
            <type name="GObject.Value" c:type="GValue*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_minimum_value" invoker="get_minimum_value">
        <doc xml:whitespace="preserve">Gets the minimum value of this object.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="value" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #GValue representing the minimum accessible value</doc>
            <type name="GObject.Value" c:type="GValue*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_current_value" invoker="set_current_value">
        <doc xml:whitespace="preserve">Sets the value of this object.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if new value is successfully set, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="value" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #GValue which is the desired new accessible value.</doc>
            <type name="GObject.Value" c:type="GValue*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_current_value"
              c:identifier="atk_value_get_current_value">
        <doc xml:whitespace="preserve">Gets the value of this object.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="value" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #GValue representing the current accessible value</doc>
            <type name="GObject.Value" c:type="GValue*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_maximum_value"
              c:identifier="atk_value_get_maximum_value">
        <doc xml:whitespace="preserve">Gets the maximum value of this object.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="value" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #GValue representing the maximum accessible value</doc>
            <type name="GObject.Value" c:type="GValue*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_minimum_increment"
              c:identifier="atk_value_get_minimum_increment"
              version="1.12">
        <doc xml:whitespace="preserve">Gets the minimum increment by which the value of this object may be changed.  If zero,
the minimum increment is undefined, which may mean that it is limited only by the 
floating point precision of the platform.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="value" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #GValue representing the minimum increment by which the accessible value may be changed</doc>
            <type name="GObject.Value" c:type="GValue*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_minimum_value"
              c:identifier="atk_value_get_minimum_value">
        <doc xml:whitespace="preserve">Gets the minimum value of this object.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="value" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #GValue representing the minimum accessible value</doc>
            <type name="GObject.Value" c:type="GValue*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_current_value"
              c:identifier="atk_value_set_current_value">
        <doc xml:whitespace="preserve">Sets the value of this object.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if new value is successfully set, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="value" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #GValue which is the desired new accessible value.</doc>
            <type name="GObject.Value" c:type="GValue*"/>
          </parameter>
        </parameters>
      </method>
    </interface>
    <record name="ValueIface"
            c:type="AtkValueIface"
            glib:is-gtype-struct-for="Value">
      <field name="parent">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="get_current_value">
        <callback name="get_current_value">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="obj" transfer-ownership="none">
              <type name="Value" c:type="AtkValue*"/>
            </parameter>
            <parameter name="value" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #GValue representing the current accessible value</doc>
              <type name="GObject.Value" c:type="GValue*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_maximum_value">
        <callback name="get_maximum_value">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="obj" transfer-ownership="none">
              <type name="Value" c:type="AtkValue*"/>
            </parameter>
            <parameter name="value" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #GValue representing the maximum accessible value</doc>
              <type name="GObject.Value" c:type="GValue*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_minimum_value">
        <callback name="get_minimum_value">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="obj" transfer-ownership="none">
              <type name="Value" c:type="AtkValue*"/>
            </parameter>
            <parameter name="value" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #GValue representing the minimum accessible value</doc>
              <type name="GObject.Value" c:type="GValue*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_current_value">
        <callback name="set_current_value">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">%TRUE if new value is successfully set, %FALSE otherwise.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="obj" transfer-ownership="none">
              <type name="Value" c:type="AtkValue*"/>
            </parameter>
            <parameter name="value" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #GValue which is the desired new accessible value.</doc>
              <type name="GObject.Value" c:type="GValue*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_minimum_increment">
        <callback name="get_minimum_increment">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="obj" transfer-ownership="none">
              <type name="Value" c:type="AtkValue*"/>
            </parameter>
            <parameter name="value" transfer-ownership="none">
              <doc xml:whitespace="preserve">a #GValue representing the minimum increment by which the accessible value may be changed</doc>
              <type name="GObject.Value" c:type="GValue*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="pad1">
        <type name="Function" c:type="AtkFunction"/>
      </field>
    </record>
    <interface name="Window"
               c:symbol-prefix="window"
               c:type="AtkWindow"
               glib:type-name="AtkWindow"
               glib:get-type="atk_window_get_type"
               glib:type-struct="WindowIface">
      <prerequisite name="Object"/>
      <glib:signal name="activate" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
      </glib:signal>
      <glib:signal name="create" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
      </glib:signal>
      <glib:signal name="deactivate" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
      </glib:signal>
      <glib:signal name="destroy" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
      </glib:signal>
      <glib:signal name="maximize" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
      </glib:signal>
      <glib:signal name="minimize" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
      </glib:signal>
      <glib:signal name="move" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
      </glib:signal>
      <glib:signal name="resize" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
      </glib:signal>
      <glib:signal name="restore" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
      </glib:signal>
    </interface>
    <record name="WindowIface"
            c:type="AtkWindowIface"
            glib:is-gtype-struct-for="Window">
      <field name="parent">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="_padding_dummy">
        <array zero-terminated="0" c:type="gpointer" fixed-size="16">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="_PropertyValues" c:type="_AtkPropertyValues">
      <field name="property_name" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="old_value" writable="1">
        <type name="GObject.Value" c:type="GValue"/>
      </field>
      <field name="new_value" writable="1">
        <type name="GObject.Value" c:type="GValue"/>
      </field>
    </record>
    <record name="_Registry" c:type="_AtkRegistry">
      <field name="parent" writable="1">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="factory_type_registry" writable="1">
        <type name="GLib.HashTable" c:type="GHashTable*">
          <type name="gpointer" c:type="gpointer"/>
          <type name="gpointer" c:type="gpointer"/>
        </type>
      </field>
      <field name="factory_singleton_cache" writable="1">
        <type name="GLib.HashTable" c:type="GHashTable*">
          <type name="gpointer" c:type="gpointer"/>
          <type name="gpointer" c:type="gpointer"/>
        </type>
      </field>
    </record>
    <record name="_RegistryClass" c:type="_AtkRegistryClass">
      <field name="parent_class" writable="1">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <function name="add_focus_tracker"
              c:identifier="atk_add_focus_tracker"
              introspectable="0">
      <doc xml:whitespace="preserve">Adds the specified function to the list of functions to be called
when an object receives focus.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">added focus tracker id, or 0 on failure.</doc>
        <type name="guint" c:type="guint"/>
      </return-value>
      <parameters>
        <parameter name="focus_tracker" transfer-ownership="none">
          <doc xml:whitespace="preserve">Function to be added to the list of functions to be called when an object receives focus.</doc>
          <type name="EventListener" c:type="AtkEventListener"/>
        </parameter>
      </parameters>
    </function>
    <function name="add_global_event_listener"
              c:identifier="atk_add_global_event_listener"
              introspectable="0">
      <doc xml:whitespace="preserve">Adds the specified function to the list of functions to be called
when an ATK event of type event_type occurs.

The format of event_type is the following:
"ATK:&lt;atk_type&gt;:&lt;atk_event&gt;

Where "ATK" works as the namespace, &lt;atk_interface&gt; is the name of
the ATK type (interface or object) and &lt;atk_event&gt; is the name of
the signal defined on that interface.

For example:
ATK:AtkObject:state-change
ATK:AtkText:text-selection-changed</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">added event listener id, or 0 on failure.</doc>
        <type name="guint" c:type="guint"/>
      </return-value>
      <parameters>
        <parameter name="listener" transfer-ownership="none">
          <doc xml:whitespace="preserve">the listener to notify</doc>
          <type name="GObject.SignalEmissionHook"
                c:type="GSignalEmissionHook"/>
        </parameter>
        <parameter name="event_type" transfer-ownership="none">
          <doc xml:whitespace="preserve">the type of event for which notification is requested</doc>
          <type name="utf8" c:type="gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="add_key_event_listener"
              c:identifier="atk_add_key_event_listener"
              introspectable="0">
      <doc xml:whitespace="preserve">Adds the specified function to the list of functions to be called
when a key event occurs.  The @data element will be passed to the
#AtkKeySnoopFunc (@listener) as the @func_data param, on notification.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">added event listener id, or 0 on failure.</doc>
        <type name="guint" c:type="guint"/>
      </return-value>
      <parameters>
        <parameter name="listener" transfer-ownership="none" closure="1">
          <doc xml:whitespace="preserve">the listener to notify</doc>
          <type name="KeySnoopFunc" c:type="AtkKeySnoopFunc"/>
        </parameter>
        <parameter name="data" transfer-ownership="none">
          <doc xml:whitespace="preserve">a #gpointer that points to a block of data that should be sent to the registered listeners, along with the event notification, when it occurs.</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="attribute_set_free"
              c:identifier="atk_attribute_set_free"
              moved-to="Attribute.set_free">
      <doc xml:whitespace="preserve">Frees the memory used by an #AtkAttributeSet, including all its
#AtkAttributes.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="attrib_set" transfer-ownership="none">
          <doc xml:whitespace="preserve">The #AtkAttributeSet to free</doc>
          <type name="AttributeSet" c:type="AtkAttributeSet*"/>
        </parameter>
      </parameters>
    </function>
    <function name="focus_tracker_init"
              c:identifier="atk_focus_tracker_init"
              introspectable="0">
      <doc xml:whitespace="preserve">Specifies the function to be called for focus tracker initialization.
This function should be called by an implementation of the
ATK interface if any specific work needs to be done to enable
focus tracking.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="init" transfer-ownership="none">
          <doc xml:whitespace="preserve">Function to be called for focus tracker initialization</doc>
          <type name="EventListenerInit" c:type="AtkEventListenerInit"/>
        </parameter>
      </parameters>
    </function>
    <function name="focus_tracker_notify"
              c:identifier="atk_focus_tracker_notify">
      <doc xml:whitespace="preserve">Cause the focus tracker functions which have been specified to be
executed for the object.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="object" transfer-ownership="none">
          <doc xml:whitespace="preserve">an #AtkObject</doc>
          <type name="Object" c:type="AtkObject*"/>
        </parameter>
      </parameters>
    </function>
    <function name="get_default_registry"
              c:identifier="atk_get_default_registry">
      <doc xml:whitespace="preserve">Gets a default implementation of the #AtkObjectFactory/type
registry.
Note: For most toolkit maintainers, this will be the correct
registry for registering new #AtkObject factories. Following
a call to this function, maintainers may call atk_registry_set_factory_type()
to associate an #AtkObjectFactory subclass with the GType of objects
for whom accessibility information will be provided.

#AtkObjectFactory/type registry</doc>
      <return-value transfer-ownership="full">
        <doc xml:whitespace="preserve">a default implementation of the</doc>
        <type name="Registry" c:type="AtkRegistry*"/>
      </return-value>
    </function>
    <function name="get_focus_object"
              c:identifier="atk_get_focus_object"
              version="1.6">
      <doc xml:whitespace="preserve">Gets the currently focused object.


application</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">the currently focused object for the current</doc>
        <type name="Object" c:type="AtkObject*"/>
      </return-value>
    </function>
    <function name="get_root" c:identifier="atk_get_root">
      <doc xml:whitespace="preserve">Gets the root accessible container for the current application.

application</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">the root accessible container for the current</doc>
        <type name="Object" c:type="AtkObject*"/>
      </return-value>
    </function>
    <function name="get_toolkit_name" c:identifier="atk_get_toolkit_name">
      <doc xml:whitespace="preserve">Gets name string for the GUI toolkit implementing ATK for this application.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">name string for the GUI toolkit implementing ATK for this application</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
    </function>
    <function name="get_toolkit_version"
              c:identifier="atk_get_toolkit_version">
      <doc xml:whitespace="preserve">Gets version string for the GUI toolkit implementing ATK for this application.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">version string for the GUI toolkit implementing ATK for this application</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
    </function>
    <function name="get_version" c:identifier="atk_get_version" version="1.20">
      <doc xml:whitespace="preserve">Gets the current version for ATK.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">version string for ATK</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
    </function>
    <function name="relation_type_for_name"
              c:identifier="atk_relation_type_for_name"
              moved-to="RelationType.for_name">
      <doc xml:whitespace="preserve">Get the #AtkRelationType type corresponding to a relation name.

or #ATK_RELATION_NULL if no matching relation type is found.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">the #AtkRelationType enumerated type corresponding to the specified name,</doc>
        <type name="RelationType" c:type="AtkRelationType"/>
      </return-value>
      <parameters>
        <parameter name="name" transfer-ownership="none">
          <doc xml:whitespace="preserve">a string which is the (non-localized) name of an ATK relation type.</doc>
          <type name="utf8" c:type="gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="relation_type_get_name"
              c:identifier="atk_relation_type_get_name"
              moved-to="RelationType.get_name">
      <doc xml:whitespace="preserve">Gets the description string describing the #AtkRelationType @type.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">the string describing the AtkRelationType</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="type" transfer-ownership="none">
          <doc xml:whitespace="preserve">The #AtkRelationType whose name is required</doc>
          <type name="RelationType" c:type="AtkRelationType"/>
        </parameter>
      </parameters>
    </function>
    <function name="relation_type_register"
              c:identifier="atk_relation_type_register"
              moved-to="RelationType.register">
      <doc xml:whitespace="preserve">Associate @name with a new #AtkRelationType</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">an #AtkRelationType associated with @name</doc>
        <type name="RelationType" c:type="AtkRelationType"/>
      </return-value>
      <parameters>
        <parameter name="name" transfer-ownership="none">
          <doc xml:whitespace="preserve">a name string</doc>
          <type name="utf8" c:type="gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="remove_focus_tracker"
              c:identifier="atk_remove_focus_tracker">
      <doc xml:whitespace="preserve">Removes the specified focus tracker from the list of functions
to be called when any object receives focus.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="tracker_id" transfer-ownership="none">
          <doc xml:whitespace="preserve">the id of the focus tracker to remove</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
      </parameters>
    </function>
    <function name="remove_global_event_listener"
              c:identifier="atk_remove_global_event_listener">
      <doc xml:whitespace="preserve">Removes the specified event listener</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="listener_id" transfer-ownership="none">
          <doc xml:whitespace="preserve">the id of the event listener to remove</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
      </parameters>
    </function>
    <function name="remove_key_event_listener"
              c:identifier="atk_remove_key_event_listener">
      <doc xml:whitespace="preserve">Removes the specified event listener</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="listener_id" transfer-ownership="none">
          <doc xml:whitespace="preserve">the id of the event listener to remove</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
      </parameters>
    </function>
    <function name="role_for_name"
              c:identifier="atk_role_for_name"
              moved-to="Role.for_name">
      <doc xml:whitespace="preserve">Get the #AtkRole type corresponding to a rolew name.

or #ATK_ROLE_INVALID if no matching role is found.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">the #AtkRole enumerated type corresponding to the specified</doc>
        <type name="Role" c:type="AtkRole"/>
      </return-value>
      <parameters>
        <parameter name="name" transfer-ownership="none">
          <doc xml:whitespace="preserve">a string which is the (non-localized) name of an ATK role.</doc>
          <type name="utf8" c:type="gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="role_get_localized_name"
              c:identifier="atk_role_get_localized_name"
              moved-to="Role.get_localized_name">
      <doc xml:whitespace="preserve">Gets the localized description string describing the #AtkRole @role.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">the localized string describing the AtkRole</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="role" transfer-ownership="none">
          <doc xml:whitespace="preserve">The #AtkRole whose localized name is required</doc>
          <type name="Role" c:type="AtkRole"/>
        </parameter>
      </parameters>
    </function>
    <function name="role_get_name"
              c:identifier="atk_role_get_name"
              moved-to="Role.get_name">
      <doc xml:whitespace="preserve">Gets the description string describing the #AtkRole @role.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">the string describing the AtkRole</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="role" transfer-ownership="none">
          <doc xml:whitespace="preserve">The #AtkRole whose name is required</doc>
          <type name="Role" c:type="AtkRole"/>
        </parameter>
      </parameters>
    </function>
    <function name="role_register"
              c:identifier="atk_role_register"
              moved-to="Role.register">
      <doc xml:whitespace="preserve">Registers the role specified by @name.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">an #AtkRole for the new role.</doc>
        <type name="Role" c:type="AtkRole"/>
      </return-value>
      <parameters>
        <parameter name="name" transfer-ownership="none">
          <doc xml:whitespace="preserve">a character string describing the new role.</doc>
          <type name="utf8" c:type="gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="state_type_for_name"
              c:identifier="atk_state_type_for_name"
              moved-to="StateType.for_name">
      <doc xml:whitespace="preserve">Gets the #AtkStateType corresponding to the description string @name.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">an #AtkStateType corresponding to @name</doc>
        <type name="StateType" c:type="AtkStateType"/>
      </return-value>
      <parameters>
        <parameter name="name" transfer-ownership="none">
          <doc xml:whitespace="preserve">a character string state name</doc>
          <type name="utf8" c:type="gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="state_type_get_name"
              c:identifier="atk_state_type_get_name"
              moved-to="StateType.get_name">
      <doc xml:whitespace="preserve">Gets the description string describing the #AtkStateType @type.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">the string describing the AtkStateType</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="type" transfer-ownership="none">
          <doc xml:whitespace="preserve">The #AtkStateType whose name is required</doc>
          <type name="StateType" c:type="AtkStateType"/>
        </parameter>
      </parameters>
    </function>
    <function name="state_type_register"
              c:identifier="atk_state_type_register"
              moved-to="StateType.register">
      <doc xml:whitespace="preserve">Register a new object state.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">an #AtkState value for the new state.</doc>
        <type name="StateType" c:type="AtkStateType"/>
      </return-value>
      <parameters>
        <parameter name="name" transfer-ownership="none">
          <doc xml:whitespace="preserve">a character string describing the new state.</doc>
          <type name="utf8" c:type="gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="text_attribute_for_name"
              c:identifier="atk_text_attribute_for_name"
              moved-to="TextAttribute.for_name">
      <doc xml:whitespace="preserve">Get the #AtkTextAttribute type corresponding to a text attribute name.

or #ATK_TEXT_ATTRIBUTE_INVALID if no matching text attribute is found.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">the #AtkTextAttribute enumerated type corresponding to the specified</doc>
        <type name="TextAttribute" c:type="AtkTextAttribute"/>
      </return-value>
      <parameters>
        <parameter name="name" transfer-ownership="none">
          <doc xml:whitespace="preserve">a string which is the (non-localized) name of an ATK text attribute.</doc>
          <type name="utf8" c:type="gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="text_attribute_get_name"
              c:identifier="atk_text_attribute_get_name"
              moved-to="TextAttribute.get_name">
      <doc xml:whitespace="preserve">Gets the name corresponding to the #AtkTextAttribute</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">a string containing the name; this string should not be freed</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="attr" transfer-ownership="none">
          <doc xml:whitespace="preserve">The #AtkTextAttribute whose name is required</doc>
          <type name="TextAttribute" c:type="AtkTextAttribute"/>
        </parameter>
      </parameters>
    </function>
    <function name="text_attribute_get_value"
              c:identifier="atk_text_attribute_get_value"
              moved-to="TextAttribute.get_value">
      <doc xml:whitespace="preserve">Gets the value for the index of the #AtkTextAttribute

NULL is returned if there are no values maintained for the attr value.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">a string containing the value; this string should not be freed;</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="attr" transfer-ownership="none">
          <doc xml:whitespace="preserve">The #AtkTextAttribute for which a value is required</doc>
          <type name="TextAttribute" c:type="AtkTextAttribute"/>
        </parameter>
        <parameter name="index_" transfer-ownership="none">
          <doc xml:whitespace="preserve">The index of the required value</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
      </parameters>
    </function>
    <function name="text_attribute_register"
              c:identifier="atk_text_attribute_register"
              moved-to="TextAttribute.register">
      <doc xml:whitespace="preserve">Associate @name with a new #AtkTextAttribute</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">an #AtkTextAttribute associated with @name</doc>
        <type name="TextAttribute" c:type="AtkTextAttribute"/>
      </return-value>
      <parameters>
        <parameter name="name" transfer-ownership="none">
          <doc xml:whitespace="preserve">a name string</doc>
          <type name="utf8" c:type="gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="text_free_ranges"
              c:identifier="atk_text_free_ranges"
              moved-to="Text.free_ranges"
              version="1.3">
      <doc xml:whitespace="preserve">Frees the memory associated with an array of AtkTextRange. It is assumed
that the array was returned by the function atk_text_get_bounded_ranges
and is NULL terminated.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="ranges" transfer-ownership="none">
          <doc xml:whitespace="preserve">A pointer to an array of  #AtkTextRange which is to be freed.</doc>
          <type name="TextRange" c:type="AtkTextRange**"/>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
