<?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"/>
  <c:include name="atk/atk.h"/>
  <namespace name="Atk"
             version="1.0"
             shared-library="libatk-1.0.so.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="const 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">Gets the keybinding which can be used to activate this action, if one
exists. The string returned should contain localized, human-readable,
key sequences as they would appear when displayed on screen. It must
be in the format "mnemonic;sequence;shortcut".

- The mnemonic key activates the object if it is presently enabled onscreen.
  This typically corresponds to the underlined letter within the widget.
  Example: "n" in a traditional "New..." menu item or the "a" in "Apply" for
  a button.
- The sequence is the full list of keys which invoke the action even if the
  relevant element is not currently shown on screen. For instance, for a menu
  item the sequence is the keybindings used to open the parent menus before
  invoking. The sequence string is colon-delimited. Example: "Alt+F:N" in a
  traditional "New..." menu item.
- The shortcut, if it exists, will invoke the same action without showing
  the component or its enclosing menus or dialogs. Example: "Ctrl+N" in a
  traditional "New..." menu item.

Example: For a traditional "New..." menu item, the expected return value
would be: "N;Alt+F:N;Ctrl+N" for the English locale and "N;Alt+D:N;Strg+N"
for the German locale. If, hypothetically, this menu item lacked a mnemonic,
it would be represented by ";;Ctrl+N" and ";;Strg+N" respectively.

Returns the keybinding which can be used to activate this action, or %NULL
if there is no keybinding for this action.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const 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="const 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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a the number of actions, or 0 if @action does not implement this interface.</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="const 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="const 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="const 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">Gets the keybinding which can be used to activate this action, if one
exists. The string returned should contain localized, human-readable,
key sequences as they would appear when displayed on screen. It must
be in the format "mnemonic;sequence;shortcut".

- The mnemonic key activates the object if it is presently enabled onscreen.
  This typically corresponds to the underlined letter within the widget.
  Example: "n" in a traditional "New..." menu item or the "a" in "Apply" for
  a button.
- The sequence is the full list of keys which invoke the action even if the
  relevant element is not currently shown on screen. For instance, for a menu
  item the sequence is the keybindings used to open the parent menus before
  invoking. The sequence string is colon-delimited. Example: "Alt+F:N" in a
  traditional "New..." menu item.
- The shortcut, if it exists, will invoke the same action without showing
  the component or its enclosing menus or dialogs. Example: "Ctrl+N" in a
  traditional "New..." menu item.

Example: For a traditional "New..." menu item, the expected return value
would be: "N;Alt+F:N;Ctrl+N" for the English locale and "N;Alt+D:N;Strg+N"
for the German locale. If, hypothetically, this menu item lacked a mnemonic,
it would be represented by ";;Ctrl+N" and ";;Strg+N" respectively.

Returns the keybinding which can be used to activate this action, or %NULL
if there is no keybinding for this action.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const 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="const 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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a the number of actions, or 0 if @action does not implement this interface.</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="const 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="const 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 implement this interface.</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="const 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="const 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="const 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="const 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="const 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>
    <constant name="BINARY_AGE" value="20810" c:type="ATK_BINARY_AGE">
      <type name="gint" c:type="gint"/>
    </constant>
    <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</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a handler id which can be used in atk_component_remove_focus_handler or zero if the handler was already added.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE or %FALSE indicating whether the specified point is within the extent of the @component 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="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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint which is the zorder of the component, i.e. the depth at which the component is shown in relation to other components in the same container.</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</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a handler id which can be used in atk_component_remove_focus_handler or zero if the handler was already added.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE or %FALSE indicating whether the specified point is within the extent of the @component 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="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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint which is the zorder of the component, i.e. the depth at which the component is shown in relation to other components in the same container.</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 or zero if the handler was already added.</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 the extent of the @component 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="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 which the component is shown in relation to other components in the same container.</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">
      <doc xml:whitespace="preserve">Specifies how xy coordinates are to be interpreted. Used by functions such
as atk_component_get_position() and atk_text_get_character_extents()</doc>
      <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"
                      invoker="get_attribute_value"
                      version="1.12">
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a string value associated with the named attribute for this document, or NULL if a value for #attribute_name has not been specified for this document.</doc>
          <type name="utf8" c:type="const 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="const gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_document_attributes"
                      invoker="get_attributes"
                      version="1.12">
        <doc xml:whitespace="preserve">Gets an AtkAttributeSet which describes document-wide
         attributes as name-value pairs.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">An AtkAttributeSet containing the explicitly set name-value-pair attributes associated with this document as a whole.</doc>
          <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="const 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="const gchar*"/>
        </return-value>
      </virtual-method>
      <virtual-method name="set_document_attribute"
                      invoker="set_attribute_value"
                      version="1.12">
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">TRUE if #value is successfully associated with #attribute_name for this document, FALSE otherwise (e.g. if the document does not allow the attribute to be modified).</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="const 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="const gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_attribute_value"
              c:identifier="atk_document_get_attribute_value"
              version="1.12">
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a string value associated with the named attribute for this document, or NULL if a value for #attribute_name has not been specified for this document.</doc>
          <type name="utf8" c:type="const 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="const 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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">An AtkAttributeSet containing the explicitly set name-value-pair attributes associated with this document as a whole.</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="const gchar*"/>
        </return-value>
      </method>
      <method name="set_attribute_value"
              c:identifier="atk_document_set_attribute_value"
              version="1.12">
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">TRUE if #value is successfully associated with #attribute_name for this document, FALSE otherwise (e.g. if the document does not allow the attribute to be modified).</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="const 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="const 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="const 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="const gchar*"/>
          </return-value>
          <parameters>
            <parameter name="document" transfer-ownership="none">
              <type name="Document" c:type="AtkDocument*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_document_attributes">
        <callback name="get_document_attributes">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">An AtkAttributeSet containing the explicitly set name-value-pair attributes associated with this document as a whole.</doc>
            <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">
            <doc xml:whitespace="preserve">a string value associated with the named attribute for this document, or NULL if a value for #attribute_name has not been specified for this document.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </return-value>
          <parameters>
            <parameter name="document" transfer-ownership="none">
              <type name="Document" c:type="AtkDocument*"/>
            </parameter>
            <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="const gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_document_attribute">
        <callback name="set_document_attribute">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">TRUE if #value is successfully associated with #attribute_name for this document, FALSE otherwise (e.g. if the document does not allow the attribute to be modified).</doc>
            <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">
              <doc xml:whitespace="preserve">a character string representing the name of the attribute whose value is being set.</doc>
              <type name="utf8" c:type="const 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="const 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="const 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">
        <doc xml:whitespace="preserve">Sets the attributes for a specified range. See the ATK_ATTRIBUTE
macros (such as #ATK_ATTRIBUTE_LEFT_MARGIN) for examples of attributes 
that can be set. Note that other attributes that do not have corresponding
ATK_ATTRIBUTE macros may also be set for certain text widgets.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if attributes successfully set for the specified range, otherwise %FALSE</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="attrib_set" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtkAttributeSet</doc>
            <type name="AttributeSet" c:type="AtkAttributeSet*"/>
          </parameter>
          <parameter name="start_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">start of range in which to set attributes</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="end_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">end of range in which to set attributes</doc>
            <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="const 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="const 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">
        <doc xml:whitespace="preserve">Sets the attributes for a specified range. See the ATK_ATTRIBUTE
macros (such as #ATK_ATTRIBUTE_LEFT_MARGIN) for examples of attributes 
that can be set. Note that other attributes that do not have corresponding
ATK_ATTRIBUTE macros may also be set for certain text widgets.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if attributes successfully set for the specified range, otherwise %FALSE</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="attrib_set" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtkAttributeSet</doc>
            <type name="AttributeSet" c:type="AtkAttributeSet*"/>
          </parameter>
          <parameter name="start_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">start of range in which to set attributes</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="end_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">end of range in which to set attributes</doc>
            <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="const 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">
            <doc xml:whitespace="preserve">%TRUE if attributes successfully set for the specified range, otherwise %FALSE</doc>
            <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">
              <doc xml:whitespace="preserve">an #AtkAttributeSet</doc>
              <type name="AttributeSet" c:type="AtkAttributeSet*"/>
            </parameter>
            <parameter name="start_offset" transfer-ownership="none">
              <doc xml:whitespace="preserve">start of range in which to set attributes</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="end_offset" transfer-ownership="none">
              <doc xml:whitespace="preserve">end of range in which to set attributes</doc>
              <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="const 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="const 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="user_data" transfer-ownership="none" closure="0">
          <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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #AtkObject which is the accessible object for the @obj</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #GObject which is the object for which @obj is the accessible object</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an #AtkObject associated with this hyperlinks i-th anchor</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an #AtkObject associated with this hyperlinks i-th anchor</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.
a *</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 i-th anchor</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an AtkHyperlink object which points to this implementing AtkObject.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an AtkHyperlink object which points to this implementing AtkObject.</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 implementing AtkObject.</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">
      <doc xml:whitespace="preserve">Describes the type of link</doc>
      <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</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the link in this hypertext document at index @link_index</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an index into the array of hyperlinks in @hypertext, or -1 if there is no hyperlink associated with this character.</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</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the link in this hypertext document at index @link_index</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an index into the array of hyperlinks in @hypertext, or -1 if there is no hyperlink associated with this character.</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 index @link_index</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, or -1 if there is no hyperlink associated with this character.</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>
    <constant name="INTERFACE_AGE" value="1" c:type="ATK_INTERFACE_AGE">
      <type name="gint" c:type="gint"/>
    </constant>
    <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="const 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="const 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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">boolean TRUE, or FALSE if operation could not be completed.</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="const 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="const 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="const 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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">boolean TRUE, or FALSE if operation could not be completed.</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="const 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="const 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 not be completed.</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="const 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="const 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</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a reference to an object's #AtkObject implementation</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">
      <doc xml:whitespace="preserve">Specifies the type of a keyboard evemt.</doc>
      <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.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">TRUE (nonzero) if the event emission should be stopped and the event 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>
        <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="user_data" transfer-ownership="none" closure="1">
          <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">
      <doc xml:whitespace="preserve">Describes the layer of a component

These enumerated "layer values" are used when determining which UI
rendering layer a component is drawn into, which can help in making
determinations of when components occlude one another.</doc>
      <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>
    <constant name="MAJOR_VERSION" value="2" c:type="ATK_MAJOR_VERSION">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="MICRO_VERSION" value="0" c:type="ATK_MICRO_VERSION">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="MINOR_VERSION" value="8" c:type="ATK_MINOR_VERSION">
      <type name="gint" c:type="gint"/>
    </constant>
    <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="const 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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #guint which is the handler id used in atk_object_remove_property_change_handler()</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an #AtkAttributeSet consisting of all explicit properties/annotations applied to the object, or an empty set if the object has no name-value pair attributes assigned to it.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a character string representing the accessible description of the accessible.</doc>
          <type name="utf8" c:type="const 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="const gchar*"/>
        </return-value>
      </virtual-method>
      <virtual-method name="get_object_locale"
                      invoker="get_object_locale"
                      version="2.7.90">
        <doc xml:whitespace="preserve">Gets a UTF-8 string indicating the POSIX-style LC_MESSAGES locale
of @accessible.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a UTF-8 string indicating the POSIX-style LC_MESSAGES locale of @accessible.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
      </virtual-method>
      <virtual-method name="get_parent" invoker="get_parent">
        <doc xml:whitespace="preserve">Gets the accessible parent of the accessible.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #AtkObject representing the accessible parent of the accessible</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtkRelationSet representing the relation set of the object.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a reference to an #AtkStateSet which is the state set of the accessible</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. You can't set
the description to NULL. This is reserved for the initial value. In
this aspect NULL is similar to ATK_ROLE_UNKNOWN. If you want to set
the name to a empty value you can use "".</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="const gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_name" invoker="set_name">
        <doc xml:whitespace="preserve">Sets the accessible name of the accessible. You can't set the name
to NULL. This is reserved for the initial value. In this aspect
NULL is similar to ATK_ROLE_UNKNOWN. If you want to set the name to
a empty value you can use "".</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="const 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="const 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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #guint which is the handler id used in atk_object_remove_property_change_handler()</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an #AtkAttributeSet consisting of all explicit properties/annotations applied to the object, or an empty set if the object has no name-value pair attributes assigned to it.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a character string representing the accessible description of the accessible.</doc>
          <type name="utf8" c:type="const 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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an integer representing the number of accessible children of the accessible.</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="const gchar*"/>
        </return-value>
      </method>
      <method name="get_object_locale"
              c:identifier="atk_object_get_object_locale"
              version="2.7.90">
        <doc xml:whitespace="preserve">Gets a UTF-8 string indicating the POSIX-style LC_MESSAGES locale
of @accessible.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a UTF-8 string indicating the POSIX-style LC_MESSAGES locale of @accessible.</doc>
          <type name="utf8" c:type="const 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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #AtkObject representing the accessible parent of the accessible</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtkObject representing the specified accessible child of the accessible.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtkRelationSet representing the relation set of the object.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a reference to an #AtkStateSet which is the state set of the accessible</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. You can't set
the description to NULL. This is reserved for the initial value. In
this aspect NULL is similar to ATK_ROLE_UNKNOWN. If you want to set
the name to a empty value you can use "".</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="const 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. You can't set the name
to NULL. This is reserved for the initial value. In this aspect
NULL is similar to ATK_ROLE_UNKNOWN. If you want to set the name to
a empty value you can use "".</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="const 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="const 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 of the accessible.</doc>
            <type name="utf8" c:type="const 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 of the accessible</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 of the object.</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 set of the accessible</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="const 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="const 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 atk_object_remove_property_change_handler()</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="const 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 properties/annotations applied to the object, or an empty set if the object has no name-value pair attributes assigned to it.</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="get_object_locale">
        <callback name="get_object_locale">
          <return-value transfer-ownership="none">
            <doc xml:whitespace="preserve">a UTF-8 string indicating the POSIX-style LC_MESSAGES locale of @accessible.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </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>
    </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</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtkObject that implements an accessibility interface on behalf of @obj</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the type of the accessible which is created by the @factory. The value G_TYPE_INVALID is returned if no type if found.</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 name="obj" transfer-ownership="none">
          <type name="Object" c:type="AtkObject*"/>
        </parameter>
        <parameter name="vals" 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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an #AtkObjectFactory appropriate for creating #AtkObjects appropriate for @type.</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>
            <array length="1" zero-terminated="0" c:type="AtkObject**">
              <type name="Object" c:type="AtkObject*"/>
            </array>
          </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="Object"/>
          </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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if @relationship is the relationship type of a relation in @set, %FALSE otherwise</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="contains_target"
              c:identifier="atk_relation_set_contains_target">
        <doc xml:whitespace="preserve">Determines whether the relation set contains a relation that
matches the specified pair formed by type @relationship and object
@target.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%TRUE if @set contains a relation with the relationship type @relationship with an object @target, %FALSE otherwise</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>
          <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_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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #AtkRelation, which is the relation at position i in the set.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an #AtkRelation, which is a relation matching the specified type.</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">
      <doc xml:whitespace="preserve">Describes the type of the relation</doc>
      <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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the #AtkRelationType enumerated type corresponding to the specified name, or #ATK_RELATION_NULL if no matching relation type is found.</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="const 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="const 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="const gchar*"/>
          </parameter>
        </parameters>
      </function>
    </enumeration>
    <enumeration name="Role"
                 glib:type-name="AtkRole"
                 glib:get-type="atk_role_get_type"
                 c:type="AtkRole">
      <doc xml:whitespace="preserve">Describes the role of an object

These are the built-in enumerated roles that UI components can have in
ATK.  Other roles may be added at runtime, so an AtkRole &gt;=
ATK_ROLE_LAST_DEFINED is not necessarily an error.</doc>
      <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="level_bar"
              value="101"
              c:identifier="ATK_ROLE_LEVEL_BAR"
              glib:nick="level-bar"/>
      <member name="last_defined"
              value="102"
              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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the #AtkRole enumerated type corresponding to the specified name, or #ATK_ROLE_INVALID if no matching role is found.</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="const 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="const 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="const 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="const 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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint representing the number of items selected, or 0 if @selection does not implement this interface.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gboolean representing the specified child is selected, or 0 if @selection does not implement this interface.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtkObject representing the selected accessible , or %NULL if @selection does not implement this interface.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint representing the number of items selected, or 0 if @selection does not implement this interface.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gboolean representing the specified child is selected, or 0 if @selection does not implement this interface.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtkObject representing the selected accessible , or %NULL if @selection does not implement this interface.</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 accessible , or %NULL if @selection does not implement this interface.</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 if @selection does not implement this interface.</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 if @selection does not implement this interface.</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>
            <array length="1" zero-terminated="0" c:type="AtkStateType*">
              <type name="StateType" c:type="AtkStateType"/>
            </array>
          </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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a new #AtkStateSet which is the intersection of the two sets.</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>
            <array length="1" zero-terminated="0" c:type="AtkStateType*">
              <type name="StateType" c:type="AtkStateType"/>
            </array>
          </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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a new #AtkStateSet which is the union of the two sets, returning %NULL is empty.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a new #AtkStateSet which contains the states which are in exactly one of the two sets.</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">
      <doc xml:whitespace="preserve">The possible types of states of an object</doc>
      <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="const 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="const 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="const 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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gchar* representing the specified mime type; the caller should not free the character string.</doc>
          <type name="utf8" c:type="const 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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A #GIOChannel which contains the content in the specified mime type.</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="const 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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">Returns a string representing a URI, or NULL if no corresponding URI can be constructed.</doc>
          <type name="utf8" c:type="const 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="const 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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gchar* representing the specified mime type; the caller should not free the character string.</doc>
          <type name="utf8" c:type="const 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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A #GIOChannel which contains the content in the specified mime type.</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="const 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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">Returns a string representing a URI, or NULL if no corresponding URI can be constructed.</doc>
          <type name="utf8" c:type="const 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="const 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">
            <doc xml:whitespace="preserve">a gchar* representing the specified mime type; the caller should not free the character string.</doc>
            <type name="utf8" c:type="const 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 specified mime type.</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="const 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 can be constructed.</doc>
            <type name="utf8" c:type="const 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="const 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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gboolean representing if the column was successfully added to the selection, or 0 if value does not implement this interface.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gboolean representing if row was successfully added to selection, or 0 if value does not implement this interface.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a AtkObject* representing the table caption, or %NULL if value does not implement this interface.</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_.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint representing the column at the specified index, or -1 if the table does not implement this interface</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</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gchar* representing the column description, or %NULL if value does not implement this interface.</doc>
          <type name="utf8" c:type="const 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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint representing the column extent at specified position, or 0 if value does not implement this interface.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a AtkObject* representing the specified column header, or %NULL if value does not implement this interface.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #gint representing the index at specified position. 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>
          <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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint representing the number of columns, or 0 if value does not implement this interface.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint representing the number of rows, or 0 if value does not implement this interface.</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_.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint representing the row at the specified index, or -1 if the table does not implement this interface</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</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gchar* representing the row description, or %NULL if value does not implement this interface.</doc>
          <type name="utf8" c:type="const 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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint representing the row extent at specified position, or 0 if value does not implement this interface.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a AtkObject* representing the specified row header, or %NULL if value does not implement this interface.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint representing the number of selected columns, or %0 if value does not implement this interface.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint representing the number of selected rows, or zero if value does not implement this interface.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a AtkObject* representing a summary description of the table, or zero if value does not implement this interface.</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</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gboolean representing if the column is selected, or 0 if value does not implement this interface.</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</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gboolean representing if the row is selected, or 0 if value does not implement this interface.</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</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gboolean representing if the cell is selected, or 0 if value does not implement this interface.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a AtkObject* representing the referred to accessible</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gboolean representing if the column was successfully removed from the selection, or 0 if value does not implement this interface.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gboolean representing if the row was successfully removed from the selection, or 0 if value does not implement this interface.</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="const 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="const 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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gboolean representing if the column was successfully added to the selection, or 0 if value does not implement this interface.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gboolean representing if row was successfully added to selection, or 0 if value does not implement this interface.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a AtkObject* representing the table caption, or %NULL if value does not implement this interface.</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_.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint representing the column at the specified index, or -1 if the table does not implement this interface</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</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gchar* representing the column description, or %NULL if value does not implement this interface.</doc>
          <type name="utf8" c:type="const 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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint representing the column extent at specified position, or 0 if value does not implement this interface.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a AtkObject* representing the specified column header, or %NULL if value does not implement this interface.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #gint representing the index at specified position. 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>
          <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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint representing the number of columns, or 0 if value does not implement this interface.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint representing the number of rows, or 0 if value does not implement this interface.</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_.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint representing the row at the specified index, or -1 if the table does not implement this interface</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</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gchar* representing the row description, or %NULL if value does not implement this interface.</doc>
          <type name="utf8" c:type="const 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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint representing the row extent at specified position, or 0 if value does not implement this interface.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a AtkObject* representing the specified row header, or %NULL if value does not implement this interface.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint representing the number of selected columns, or %0 if value does not implement this interface.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gint representing the number of selected rows, or zero if value does not implement this interface.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a AtkObject* representing a summary description of the table, or zero if value does not implement this interface.</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</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gboolean representing if the column is selected, or 0 if value does not implement this interface.</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</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gboolean representing if the row is selected, or 0 if value does not implement this interface.</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</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gboolean representing if the cell is selected, or 0 if value does not implement this interface.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a AtkObject* representing the referred to accessible</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gboolean representing if the column was successfully removed from the selection, or 0 if value does not implement this interface.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a gboolean representing if the row was successfully removed from the selection, or 0 if value does not implement this interface.</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="const 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="const 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 accessible</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. 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>
            <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, or -1 if the table does not implement this interface</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, or -1 if the table does not implement this interface</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 if value does not implement this interface.</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 if value does not implement this interface.</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 if value does not implement this interface.</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 if value does not implement this interface.</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 %NULL if value does not implement this interface.</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 if value does not implement this interface.</doc>
            <type name="utf8" c:type="const 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 header, or %NULL if value does not implement this interface.</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 if value does not implement this interface.</doc>
            <type name="utf8" c:type="const 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 header, or %NULL if value does not implement this interface.</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 of the table, or zero if value does not implement this interface.</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="const 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="const 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, or %0 if value does not implement this interface.</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, or zero if value does not implement this interface.</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 if value does not implement this interface.</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 if value does not implement this interface.</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 if value does not implement this interface.</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, or 0 if value does not implement this interface.</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 the selection, or 0 if value does not implement this interface.</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 the selection, or 0 if value does not implement this interface.</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 the selection, or 0 if value does not implement this interface.</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>
            <array zero-terminated="0" c:type="AtkTextRange**">
              <type name="TextRange" c:type="AtkTextRange*"/>
            </array>
          </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"
                      invoker="get_bounded_ranges"
                      version="1.3">
        <doc xml:whitespace="preserve">Get the ranges of text in the specified bounding box.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">Array of AtkTextRange. The last element of the array returned by this function will be NULL.</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>
      </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">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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtkAttributeSet which contains the default values of attributes.  at @offset. this #atkattributeset should be freed by a call to atk_attribute_set_free().</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">The number of selected regions, or -1 if a failure occurred.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the offset to the character which is located at the specified @x and @y coordinates.</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">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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtkAttributeSet which contains the attributes explicitly set at @offset. This #AtkAttributeSet should be freed by a call to atk_attribute_set_free().</doc>
          <type name="AttributeSet" c:type="AtkAttributeSet*"/>
        </return-value>
        <parameters>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">the offset at which to get the attributes, -1 means the offset of the character to be inserted at the caret location.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="start_offset"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">the address to put the start offset of the range</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="end_offset"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">the address to put the end offset of the range</doc>
            <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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a newly allocated string containing the selected text. Use g_free() to free the returned string.</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"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <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"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a newly allocated string containing the text from @start_offset up to, but not including @end_offset. Use g_free() to free the returned string.</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, or -1 for the end of the string.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a newly allocated string containing the text after @offset bounded by the specified @boundary_type. Use g_free() to free the returned string.</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"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">the start offset of the returned string</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="end_offset"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a newly allocated string containing the text at @offset bounded by the specified @boundary_type. Use g_free() to free the returned string.</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"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">the start offset of the returned string</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="end_offset"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a newly allocated string containing the text before @offset bounded by the specified @boundary_type. Use g_free() to free the returned string.</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"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">the start offset of the returned string</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="end_offset"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">Array of AtkTextRange. The last element of the array returned by this function will be NULL.</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">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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtkAttributeSet which contains the default values of attributes.  at @offset. this #atkattributeset should be freed by a call to atk_attribute_set_free().</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">The number of selected regions, or -1 if a failure occurred.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the offset to the character which is located at the specified @x and @y coordinates.</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">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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtkAttributeSet which contains the attributes explicitly set at @offset. This #AtkAttributeSet should be freed by a call to atk_attribute_set_free().</doc>
          <type name="AttributeSet" c:type="AtkAttributeSet*"/>
        </return-value>
        <parameters>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">the offset at which to get the attributes, -1 means the offset of the character to be inserted at the caret location.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="start_offset"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">the address to put the start offset of the range</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="end_offset"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">the address to put the end offset of the range</doc>
            <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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a newly allocated string containing the selected text. Use g_free() to free the returned string.</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"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <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"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a newly allocated string containing the text from @start_offset up to, but not including @end_offset. Use g_free() to free the returned string.</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, or -1 for the end of the string.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a newly allocated string containing the text after @offset bounded by the specified @boundary_type. Use g_free() to free the returned string.</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"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">the start offset of the returned string</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="end_offset"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a newly allocated string containing the text at @offset bounded by the specified @boundary_type. Use g_free() to free the returned string.</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"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">the start offset of the returned string</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="end_offset"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a newly allocated string containing the text before @offset bounded by the specified @boundary_type. Use g_free() to free the returned string.</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"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">the start offset of the returned string</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="end_offset"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <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">
      <doc xml:whitespace="preserve">Describes the text attributes supported</doc>
      <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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the #AtkTextAttribute enumerated type corresponding to the specified name, or #ATK_TEXT_ATTRIBUTE_INVALID if no matching text attribute is found.</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="const 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="const 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</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a string containing the value; this string should not be freed; NULL is returned if there are no values maintained for the attr value.</doc>
          <type name="utf8" c:type="const 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="const gchar*"/>
          </parameter>
        </parameters>
      </function>
    </enumeration>
    <enumeration name="TextBoundary"
                 glib:type-name="AtkTextBoundary"
                 glib:get-type="atk_text_boundary_get_type"
                 c:type="AtkTextBoundary">
      <doc xml:whitespace="preserve">Text boundary types used for specifying boundaries for regions of text</doc>
      <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">
      <doc xml:whitespace="preserve">Describes the type of clipping required.</doc>
      <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 to, but not including @end_offset. Use g_free() to free the returned string.</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, or -1 for the end of the string.</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 by the specified @boundary_type. Use g_free() to free the returned string.</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"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full">
              <doc xml:whitespace="preserve">the start offset of the returned string</doc>
              <type name="gint" c:type="gint*"/>
            </parameter>
            <parameter name="end_offset"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full">
              <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 the specified @boundary_type. Use g_free() to free the returned string.</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"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full">
              <doc xml:whitespace="preserve">the start offset of the returned string</doc>
              <type name="gint" c:type="gint*"/>
            </parameter>
            <parameter name="end_offset"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full">
              <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 by the specified @boundary_type. Use g_free() to free the returned string.</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"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full">
              <doc xml:whitespace="preserve">the start offset of the returned string</doc>
              <type name="gint" c:type="gint*"/>
            </parameter>
            <parameter name="end_offset"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full">
              <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 explicitly set at @offset. This #AtkAttributeSet should be freed by a call to atk_attribute_set_free().</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">
              <doc xml:whitespace="preserve">the offset at which to get the attributes, -1 means the offset of the character to be inserted at the caret location.</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="start_offset"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full">
              <doc xml:whitespace="preserve">the address to put the start offset of the range</doc>
              <type name="gint" c:type="gint*"/>
            </parameter>
            <parameter name="end_offset"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full">
              <doc xml:whitespace="preserve">the address to put the end offset of the range</doc>
              <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 values of attributes.  at @offset. this #atkattributeset should be freed by a call to atk_attribute_set_free().</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 the specified @x and @y coordinates.</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 occurred.</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() to free the returned string.</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"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full">
              <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"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full">
              <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">
            <doc xml:whitespace="preserve">Array of AtkTextRange. The last element of the array returned by this function will be NULL.</doc>
            <array c:type="AtkTextRange**">
              <type name="TextRange" c:type="AtkTextRange*"/>
            </array>
          </return-value>
          <parameters>
            <parameter name="text" transfer-ownership="none">
              <type name="Text" c:type="AtkText*"/>
            </parameter>
            <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>
        </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="const 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="const 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="const 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="const 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="const 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="const 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">
      <doc xml:whitespace="preserve">#AtkWindow should be implemented by the UI elements that represent
a top-level window, such as the main window of an application or
dialog.</doc>
      <prerequisite name="Object"/>
      <glib:signal name="activate" when="last" version="2.1.5">
        <doc xml:whitespace="preserve">The signal #AtkWindow::activate is emitted when a window
becomes the active window of the application or session.</doc>
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
      </glib:signal>
      <glib:signal name="create" when="last" version="2.1.5">
        <doc xml:whitespace="preserve">The signal #AtkWindow::create is emitted when a new window
is created.</doc>
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
      </glib:signal>
      <glib:signal name="deactivate" when="last" version="2.1.5">
        <doc xml:whitespace="preserve">The signal #AtkWindow::deactivate is emitted when a window is
no longer the active window of the application or session.</doc>
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
      </glib:signal>
      <glib:signal name="destroy" when="last" version="2.1.5">
        <doc xml:whitespace="preserve">The signal #AtkWindow::destroy is emitted when a window is
destroyed.</doc>
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
      </glib:signal>
      <glib:signal name="maximize" when="last" version="2.1.5">
        <doc xml:whitespace="preserve">The signal #AtkWindow::maximize is emitted when a window
is maximized.</doc>
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
      </glib:signal>
      <glib:signal name="minimize" when="last" version="2.1.5">
        <doc xml:whitespace="preserve">The signal #AtkWindow::minimize is emitted when a window
is minimized.</doc>
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
      </glib:signal>
      <glib:signal name="move" when="last" version="2.1.5">
        <doc xml:whitespace="preserve">The signal #AtkWindow::move is emitted when a window
is moved.</doc>
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
      </glib:signal>
      <glib:signal name="resize" when="last" version="2.1.5">
        <doc xml:whitespace="preserve">The signal #AtkWindow::resize is emitted when a window
is resized.</doc>
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
      </glib:signal>
      <glib:signal name="restore" when="last" version="2.1.5">
        <doc xml:whitespace="preserve">The signal #AtkWindow::restore is emitted when a window
is restored.</doc>
        <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="const 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;:&lt;atk_event_detail&gt;

Where "ATK" works as the namespace, &lt;atk_interface&gt; is the name of
the ATK type (interface or object), &lt;atk_event&gt; is the name of the
signal defined on that interface and &lt;atk_event_detail&gt; is the
gsignal detail of that signal. You can find more info about gsignal
details here:
http://developer.gnome.org/gobject/stable/gobject-Signals.html

The first three parameters are mandatory. The last one is optional.

For example:
  ATK:AtkObject:state-change
  ATK:AtkText:text-selection-changed
  ATK:AtkText:text-insert:system

Toolkit implementor note: Atk provides a default implementation for
this virtual method, and that implementation should be enough for
most of the cases. You should have a really good reason to
reimplement this method.</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="const 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_binary_age"
              c:identifier="atk_get_binary_age"
              version="2.7.4">
      <doc xml:whitespace="preserve">Returns the binary age as passed to libtool when building the ATK
library the process is running against.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">the binary age of the ATK library</doc>
        <type name="guint" c:type="guint"/>
      </return-value>
    </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.</doc>
      <return-value transfer-ownership="full">
        <doc xml:whitespace="preserve">a default implementation of the #AtkObjectFactory/type registry</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.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">the currently focused object for the current application</doc>
        <type name="Object" c:type="AtkObject*"/>
      </return-value>
    </function>
    <function name="get_interface_age"
              c:identifier="atk_get_interface_age"
              version="2.7.4">
      <doc xml:whitespace="preserve">Returns the interface age as passed to libtool when building the
ATK library the process is running against.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">the interface age of the ATK library</doc>
        <type name="guint" c:type="guint"/>
      </return-value>
    </function>
    <function name="get_major_version"
              c:identifier="atk_get_major_version"
              version="2.7.4">
      <doc xml:whitespace="preserve">Returns the major version number of the ATK library.  (e.g. in ATK
version 2.7.4 this is 2.)

This function is in the library, so it represents the ATK library
your code is running against. In contrast, the #ATK_MAJOR_VERSION
macro represents the major version of the ATK headers you have
included when compiling your code.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">the major version number of the ATK library</doc>
        <type name="guint" c:type="guint"/>
      </return-value>
    </function>
    <function name="get_micro_version"
              c:identifier="atk_get_micro_version"
              version="2.7.4">
      <doc xml:whitespace="preserve">Returns the micro version number of the ATK library.  (e.g. in ATK
version 2.7.4 this is 4.)

This function is in the library, so it represents the ATK library
your code is are running against. In contrast, the
#ATK_MICRO_VERSION macro represents the micro version of the ATK
headers you have included when compiling your code.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">the micro version number of the ATK library</doc>
        <type name="guint" c:type="guint"/>
      </return-value>
    </function>
    <function name="get_minor_version"
              c:identifier="atk_get_minor_version"
              version="2.7.4">
      <doc xml:whitespace="preserve">Returns the minor version number of the ATK library.  (e.g. in ATK
version 2.7.4 this is 7.)

This function is in the library, so it represents the ATK library
your code is are running against. In contrast, the
#ATK_MINOR_VERSION macro represents the minor version of the ATK
headers you have included when compiling your code.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">the minor version number of the ATK library</doc>
        <type name="guint" c:type="guint"/>
      </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.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">the root accessible container for the current application</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="const 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="const 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="const 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.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">the #AtkRelationType enumerated type corresponding to the specified name, or #ATK_RELATION_NULL if no matching relation type is found.</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="const 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="const 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="const 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">@listener_id is the value returned by #atk_add_global_event_listener
when you registered that event listener.

Toolkit implementor note: Atk provides a default implementation for
this virtual method, and that implementation should be enough for
most of the cases. You should have a really good reason to
reimplement this method.

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">@listener_id is the value returned by #atk_add_key_event_listener
when you registered that event listener.

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.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">the #AtkRole enumerated type corresponding to the specified name, or #ATK_ROLE_INVALID if no matching role is found.</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="const 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="const 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="const 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="const 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="const 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="const 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="const 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.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">the #AtkTextAttribute enumerated type corresponding to the specified name, or #ATK_TEXT_ATTRIBUTE_INVALID if no matching text attribute is found.</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="const 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="const 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</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">a string containing the value; this string should not be freed; NULL is returned if there are no values maintained for the attr value.</doc>
        <type name="utf8" c:type="const 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="const 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>
          <array zero-terminated="0" c:type="AtkTextRange**">
            <type name="TextRange" c:type="AtkTextRange*"/>
          </array>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
