<?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="dbus-1"/>
  <namespace name="Atspi"
             version="2.0"
             shared-library="libatspi.so.0.0"
             c:identifier-prefixes="Atspi"
             c:symbol-prefixes="atspi">
    <alias name="ControllerEventMask" c:type="AtspiControllerEventMask">
      <type name="guint" c:type="guint"/>
    </alias>
    <alias name="DeviceEventMask" c:type="AtspiDeviceEventMask">
      <type name="guint" c:type="guint"/>
    </alias>
    <alias name="KeyEventMask" c:type="AtspiKeyEventMask">
      <type name="guint" c:type="guint"/>
    </alias>
    <alias name="KeyMaskType" c:type="AtspiKeyMaskType">
      <type name="guint" c:type="guint"/>
    </alias>
    <alias name="KeystrokeListener" c:type="AtspiKeystrokeListener">
      <type name="gpointer" c:type="gpointer"/>
    </alias>
    <class name="Accessible"
           c:symbol-prefix="accessible"
           c:type="AtspiAccessible"
           parent="Object"
           glib:type-name="AtspiAccessible"
           glib:get-type="atspi_accessible_get_type"
           glib:type-struct="AccessibleClass">
      <implements name="Action"/>
      <implements name="Collection"/>
      <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"/>
      <method name="clear_cache" c:identifier="atspi_accessible_clear_cache">
        <doc xml:whitespace="preserve">Clears the cached information for the given accessible and all of its
descendants.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <method name="get_action" c:identifier="atspi_accessible_get_action">
        <doc xml:whitespace="preserve">Gets the #AtspiAction interface for an #AtspiAccessible.

instance, or NULL if @obj does not implement #AtspiAction.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to an #AtspiAction interface</doc>
          <type name="Action" c:type="AtspiAction*"/>
        </return-value>
      </method>
      <method name="get_application"
              c:identifier="atspi_accessible_get_application"
              throws="1">
        <doc xml:whitespace="preserve">Gets the containing #AtspiApplication for an object.

this object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">the containing #AtspiApplication instance for</doc>
          <type name="Accessible" c:type="AtspiAccessible*"/>
        </return-value>
      </method>
      <method name="get_atspi_version"
              c:identifier="atspi_accessible_get_atspi_version"
              throws="1">
        <doc xml:whitespace="preserve">Gets the AT-SPI IPC specification version supported by the application
pointed to by the #AtspiAccessible object.
Only works on application root objects.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a UTF-8 string indicating the AT-SPI version for the #AtspiAccessible object or NULL on exception.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_attributes"
              c:identifier="atspi_accessible_get_attributes"
              throws="1">
        <doc xml:whitespace="preserve">Gets the #AttributeSet representing any assigned 
name-value pair attributes or annotations for this object.
For typographic, textual, or textually-semantic attributes, see
atspi_text_get_attributes instead.

attributes assigned to this object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">The name-value-pair</doc>
          <type name="GLib.HashTable" c:type="GHashTable*">
            <type name="utf8"/>
            <type name="utf8"/>
          </type>
        </return-value>
      </method>
      <method name="get_attributes_as_array"
              c:identifier="atspi_accessible_get_attributes_as_array"
              throws="1">
        <doc xml:whitespace="preserve">Gets a #GArray representing any assigned 
name-value pair attributes or annotations for this object.
For typographic, textual, or textually-semantic attributes, see
atspi_text_get_attributes_as_array instead.

attributes assigned to this object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">The name-value-pair</doc>
          <array name="GLib.Array" c:type="GArray*">
            <type name="utf8"/>
          </array>
        </return-value>
      </method>
      <method name="get_child_at_index"
              c:identifier="atspi_accessible_get_child_at_index"
              throws="1">
        <doc xml:whitespace="preserve">Gets the #AtspiAccessible child of an #AtspiAccessible object at a given index.

index @child_index or NULL on exception.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to the #AtspiAccessible child object at</doc>
          <type name="Accessible" c:type="AtspiAccessible*"/>
        </return-value>
        <parameters>
          <parameter name="child_index" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #long indicating which child is specified.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_child_count"
              c:identifier="atspi_accessible_get_child_count"
              throws="1">
        <doc xml:whitespace="preserve">Gets the number of children contained by an #AtspiAccessible object.

contained by an #AtspiAccessible object or -1 on exception.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #long indicating the number of #AtspiAccessible children</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </method>
      <method name="get_collection"
              c:identifier="atspi_accessible_get_collection">
        <doc xml:whitespace="preserve">Gets the #AtspiCollection interface for an #AtspiAccessible.

instance, or NULL if @obj does not implement #AtspiCollection.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to an #AtspiCollection interface</doc>
          <type name="Collection" c:type="AtspiCollection*"/>
        </return-value>
      </method>
      <method name="get_component"
              c:identifier="atspi_accessible_get_component">
        <doc xml:whitespace="preserve">Gets the #AtspiComponent interface for an #AtspiAccessible.

instance, or NULL if @obj does not implement #AtspiComponent.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to an #AtspiComponent interface</doc>
          <type name="Component" c:type="AtspiComponent*"/>
        </return-value>
      </method>
      <method name="get_description"
              c:identifier="atspi_accessible_get_description"
              throws="1">
        <doc xml:whitespace="preserve">Gets the description of an #AtspiAccessible object.

or NULL on exception.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a UTF-8 string describing the #AtspiAccessible object</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_document" c:identifier="atspi_accessible_get_document">
        <doc xml:whitespace="preserve">Gets the #AtspiDocument interface for an #AtspiAccessible.

instance, or NULL if @obj does not implement #AtspiDocument.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to an #AtspiDocument interface</doc>
          <type name="Document" c:type="AtspiDocument*"/>
        </return-value>
      </method>
      <method name="get_editable_text"
              c:identifier="atspi_accessible_get_editable_text">
        <doc xml:whitespace="preserve">Gets the #AtspiEditableText interface for an #AtspiAccessible.

instance, or NULL if @obj does not implement #AtspiEditableText.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to an #AtspiEditableText interface</doc>
          <type name="EditableText" c:type="AtspiEditableText*"/>
        </return-value>
      </method>
      <method name="get_hyperlink"
              c:identifier="atspi_accessible_get_hyperlink">
        <doc xml:whitespace="preserve">Gets the #AtspiHyperlink interface for an #AtspiAccessible.

the given #AtspiAccessible, or NULL if not supported.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">the #AtspiHyperlink object associated with</doc>
          <type name="Hyperlink" c:type="AtspiHyperlink*"/>
        </return-value>
      </method>
      <method name="get_hypertext"
              c:identifier="atspi_accessible_get_hypertext">
        <doc xml:whitespace="preserve">Gets the #AtspiHypertext interface for an #AtspiAccessible.

instance, or NULL if @obj does not implement #AtspiHypertext.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to an #AtspiHypertext interface</doc>
          <type name="Hypertext" c:type="AtspiHypertext*"/>
        </return-value>
      </method>
      <method name="get_id" c:identifier="atspi_accessible_get_id" throws="1">
        <return-value transfer-ownership="none">
          <type name="gint" c:type="gint"/>
        </return-value>
      </method>
      <method name="get_image" c:identifier="atspi_accessible_get_image">
        <doc xml:whitespace="preserve">Gets the #AtspiImage interface for an #AtspiAccessible.

NULL if @obj does not implement #AtspiImage.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to an #AtspiImage interface instance, or</doc>
          <type name="Image" c:type="AtspiImage*"/>
        </return-value>
      </method>
      <method name="get_index_in_parent"
              c:identifier="atspi_accessible_get_index_in_parent"
              throws="1">
        <doc xml:whitespace="preserve">Gets the index of an #AtspiAccessible object within its parent's 
#AtspiAccessible children list.

in its parent,
or -1 if @obj has no containing parent or on exception.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #glong indicating the index of the #AtspiAccessible object</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </method>
      <method name="get_interfaces"
              c:identifier="atspi_accessible_get_interfaces">
        <doc xml:whitespace="preserve">A set of pointers to all interfaces supported by an #AtspiAccessible.

describing the interfaces supported by the object.  Interfaces are
denoted in short-hand (i.e. "Component", "Text" etc.).</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A #GArray of strings</doc>
          <array name="GLib.Array" c:type="GArray*">
            <type name="utf8"/>
          </array>
        </return-value>
      </method>
      <method name="get_localized_role_name"
              c:identifier="atspi_accessible_get_localized_role_name"
              throws="1">
        <doc xml:whitespace="preserve">Gets a UTF-8 string corresponding to the name of the role played by an 
object, translated to the current locale.
This method will return useful values for roles that fall outside the
enumeration used in atspi_accessible_getRole ().

by an #AtspiAccessible object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a localized, UTF-8 string specifying the type of UI role played</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_name"
              c:identifier="atspi_accessible_get_name"
              throws="1">
        <doc xml:whitespace="preserve">Gets the name of an #AtspiAccessible object.

or NULL on exception.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a UTF-8 string indicating the name of the #AtspiAccessible object</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_parent"
              c:identifier="atspi_accessible_get_parent"
              throws="1">
        <doc xml:whitespace="preserve">Gets an #AtspiAccessible object's parent container.

contains the given #AtspiAccessible instance, or NULL if the @obj
has no parent container.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to the #AtspiAccessible object which</doc>
          <type name="Accessible" c:type="AtspiAccessible*"/>
        </return-value>
      </method>
      <method name="get_process_id"
              c:identifier="atspi_accessible_get_process_id"
              throws="1">
        <doc xml:whitespace="preserve">Returns the process id associated with the given accessible.  Mainly
added for debugging; it is a shortcut to explicitly querying the
accessible's app-&gt;bus_name and then calling GetConnectionUnixProcessID.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">The process ID, or -1 if defunct.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
      </method>
      <method name="get_relation_set"
              c:identifier="atspi_accessible_get_relation_set"
              throws="1">
        <doc xml:whitespace="preserve">Gets the set of #AtspiRelation objects which describes this #AtspiAccessible object's
relationships with other #AtspiAccessible objects.

#AtspiRelation pointers or NULL on exception.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a #GArray of</doc>
          <array name="GLib.Array" c:type="GArray*">
            <type name="Accessible"/>
          </array>
        </return-value>
      </method>
      <method name="get_role"
              c:identifier="atspi_accessible_get_role"
              throws="1">
        <doc xml:whitespace="preserve">Gets the UI role played by an #AtspiAccessible object.
This role's name can be obtained via atspi_accessible_get_role_name ().</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the #AtspiRole of an #AtspiAccessible object.</doc>
          <type name="Role" c:type="AtspiRole"/>
        </return-value>
      </method>
      <method name="get_role_name"
              c:identifier="atspi_accessible_get_role_name"
              throws="1">
        <doc xml:whitespace="preserve">Gets a UTF-8 string corresponding to the name of the role played by an object.
This method will return useful values for roles that fall outside the
enumeration used in atspi_accessible_get_role ().

#AtspiAccessible object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a UTF-8 string specifying the type of UI role played by an</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_selection"
              c:identifier="atspi_accessible_get_selection">
        <doc xml:whitespace="preserve">Gets the #AtspiSelection interface for an #AtspiAccessible.

instance, or NULL if @obj does not implement #AtspiSelection.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to an #AtspiSelection interface</doc>
          <type name="Selection" c:type="AtspiSelection*"/>
        </return-value>
      </method>
      <method name="get_state_set"
              c:identifier="atspi_accessible_get_state_set">
        <doc xml:whitespace="preserve">Gets the states currently held by an object.

object's current state set.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to an #AtspiStateSet representing an</doc>
          <type name="StateSet" c:type="AtspiStateSet*"/>
        </return-value>
      </method>
      <method name="get_table" c:identifier="atspi_accessible_get_table">
        <doc xml:whitespace="preserve">Gets the #AtspiTable interface for an #AtspiAccessible.

NULL if @obj does not implement #AtspiTable.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to an #AtspiTable interface instance, or</doc>
          <type name="Table" c:type="AtspiTable*"/>
        </return-value>
      </method>
      <method name="get_text" c:identifier="atspi_accessible_get_text">
        <doc xml:whitespace="preserve">Gets the #AtspiTable interface for an #AtspiAccessible.

NULL if @obj does not implement #AtspiText.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to an #AtspiText interface instance, or</doc>
          <type name="Text" c:type="AtspiText*"/>
        </return-value>
      </method>
      <method name="get_toolkit_name"
              c:identifier="atspi_accessible_get_toolkit_name"
              throws="1">
        <doc xml:whitespace="preserve">Gets the toolkit name for an #AtspiAccessible object.
Only works on application root objects.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a UTF-8 string indicating the toolkit name for the #AtspiAccessible object or NULL on exception.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_toolkit_version"
              c:identifier="atspi_accessible_get_toolkit_version"
              throws="1">
        <doc xml:whitespace="preserve">Gets the application id for a #AtspiAccessible object.
Only works on application root objects.

or -1 on exception.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a positive #gint indicating the id for the #AtspiAccessible object</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_value" c:identifier="atspi_accessible_get_value">
        <doc xml:whitespace="preserve">Gets the #AtspiTable interface for an #AtspiAccessible.

NULL if @obj does not implement #AtspiValue.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to an #AtspiValue interface instance, or</doc>
          <type name="Value" c:type="AtspiValue*"/>
        </return-value>
      </method>
      <method name="set_cache_mask"
              c:identifier="atspi_accessible_set_cache_mask">
        <doc xml:whitespace="preserve">the root of an application.

Sets the type of data to cache for accessibles.
If this is not set for an application or is reset to ATSPI_CACHE_UNDEFINED,
then the desktop's cache flag will be used.
If the desktop's cache flag is also undefined, then all possible data will
be cached.
This function is intended to work around bugs in toolkits where the proper
events are not raised / to aid in testing for such bugs.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="mask" transfer-ownership="none">
            <doc xml:whitespace="preserve">An #AtspiCache specifying a bit mask of the types of data to cache.</doc>
            <type name="gint" c:type="AtspiCache"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent">
        <type name="Object" c:type="AtspiObject"/>
      </field>
      <field name="accessible_parent">
        <type name="Accessible" c:type="AtspiAccessible*"/>
      </field>
      <field name="children">
        <type name="GLib.List" c:type="GList*">
          <type name="gpointer" c:type="gpointer"/>
        </type>
      </field>
      <field name="role">
        <type name="Role" c:type="AtspiRole"/>
      </field>
      <field name="interfaces">
        <type name="gint" c:type="gint"/>
      </field>
      <field name="name">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="description">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="states">
        <type name="StateSet" c:type="AtspiStateSet*"/>
      </field>
      <field name="attributes">
        <type name="GLib.HashTable" c:type="GHashTable*">
          <type name="gpointer" c:type="gpointer"/>
          <type name="gpointer" c:type="gpointer"/>
        </type>
      </field>
      <field name="cached_properties">
        <type name="guint" c:type="guint"/>
      </field>
    </class>
    <record name="AccessibleClass"
            c:type="AtspiAccessibleClass"
            glib:is-gtype-struct-for="Accessible">
      <field name="parent_class">
        <type name="ObjectClass" c:type="AtspiObjectClass"/>
      </field>
    </record>
    <interface name="Action"
               c:symbol-prefix="action"
               c:type="AtspiAction"
               glib:type-name="AtspiAction"
               glib:get-type="atspi_action_get_type">
      <method name="do_action"
              c:identifier="atspi_action_do_action"
              throws="1">
        <doc xml:whitespace="preserve">Invoke the action indicated by #index.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if the action is successfully invoked, otherwise #FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="i" transfer-ownership="none">
            <doc xml:whitespace="preserve">an integer specifying which action to invoke.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_description"
              c:identifier="atspi_action_get_description"
              throws="1">
        <doc xml:whitespace="preserve">Get the description of '@i-th' action invocable on an
object implementing #AtspiAction.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a UTF-8 string describing the '@i-th' invocable action.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="i" transfer-ownership="none">
            <doc xml:whitespace="preserve">an integer indicating which action to query.</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_key_binding"
              c:identifier="atspi_action_get_key_binding"
              throws="1">
        <doc xml:whitespace="preserve">Get the keybindings for the @i-th action invocable on an
object implementing #AtspiAction, if any are defined.
The keybindings string format is as follows:
there are multiple parts to a keybinding string (typically 3).
They are delimited with ";".  The first is the action's
keybinding which is usable if the object implementing the action
is currently posted to the screen, e.g. if a menu is posted 
then these keybindings for the corresponding menu-items are
available.  The second keybinding substring is the full key sequence
necessary to post the action's widget and activate it, e.g. for
a menu item such as "File-&gt;Open" it would both post the menu and
activate the item.  Thus the second keybinding string is available
during the lifetime of the containing toplevel window as a whole,
whereas the first keybinding string only works while the object
implementing AtkAction is posted.  The third (and optional)
keybinding string is the "keyboard shortcut" which invokes the 
action without posting any menus. 
Meta-keys are indicated by the conventional strings
"&lt;Control&gt;", "&lt;Alt&gt;", "&lt;Shift&gt;", "&lt;Mod2&gt;",
etc. (we use the same string as gtk_accelerator_name() in 
gtk+-2.X.

invocable action's keybindings.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a UTF-8 string which can be parsed to determine the @i-th</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="i" transfer-ownership="none">
            <doc xml:whitespace="preserve">an integer indicating which action to query.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_n_actions"
              c:identifier="atspi_action_get_n_actions"
              throws="1">
        <doc xml:whitespace="preserve">Get the number of actions invokable on an #AtspiAction implementor.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an integer indicating the number of invocable actions.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </method>
      <method name="get_name" c:identifier="atspi_action_get_name" throws="1">
        <doc xml:whitespace="preserve">Get the name of the '@i-th' action invocable on an
object implementing #AtspiAction.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">the 'event type' name of the action, as a UTF-8 string.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="i" transfer-ownership="none">
            <doc xml:whitespace="preserve">an integer indicating which action to query.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
    </interface>
    <record name="Application" c:type="AtspiApplication">
      <field name="parent" writable="1">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="hash" 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="bus_name" writable="1">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="bus" introspectable="0" writable="1">
        <type c:type="DBusConnection*"/>
      </field>
      <field name="root" writable="1">
        <type name="gpointer" c:type="gpointer*"/>
      </field>
      <field name="cache" writable="1">
        <type name="Cache" c:type="AtspiCache"/>
      </field>
      <field name="toolkit_name" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="toolkit_version" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="atspi_version" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
    </record>
    <record name="ApplicationClass" c:type="AtspiApplicationClass">
      <field name="parent_class" writable="1">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <constant name="COMPONENTLAYER_COUNT"
              value="9"
              c:type="ATSPI_COMPONENTLAYER_COUNT">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="COORD_TYPE_COUNT"
              value="2"
              c:type="ATSPI_COORD_TYPE_COUNT">
      <type name="gint" c:type="gint"/>
    </constant>
    <bitfield name="Cache" c:type="AtspiCache">
      <member name="none" value="0" c:identifier="ATSPI_CACHE_NONE"/>
      <member name="parent" value="1" c:identifier="ATSPI_CACHE_PARENT"/>
      <member name="children" value="2" c:identifier="ATSPI_CACHE_CHILDREN"/>
      <member name="name" value="4" c:identifier="ATSPI_CACHE_NAME"/>
      <member name="description"
              value="8"
              c:identifier="ATSPI_CACHE_DESCRIPTION"/>
      <member name="states" value="16" c:identifier="ATSPI_CACHE_STATES"/>
      <member name="role" value="32" c:identifier="ATSPI_CACHE_ROLE"/>
      <member name="interfaces"
              value="64"
              c:identifier="ATSPI_CACHE_INTERFACES"/>
      <member name="attributes"
              value="128"
              c:identifier="ATSPI_CACHE_ATTRIBUTES"/>
      <member name="all" value="1073741823" c:identifier="ATSPI_CACHE_ALL"/>
      <member name="default" value="127" c:identifier="ATSPI_CACHE_DEFAULT"/>
      <member name="undefined"
              value="1073741824"
              c:identifier="ATSPI_CACHE_UNDEFINED"/>
    </bitfield>
    <interface name="Collection"
               c:symbol-prefix="collection"
               c:type="AtspiCollection"
               glib:type-name="AtspiCollection"
               glib:get-type="atspi_collection_get_type">
      <method name="get_active_descendant"
              c:identifier="atspi_collection_get_active_descendant"
              introspectable="0"
              throws="1">
        <doc xml:whitespace="preserve">Not yet implemented.</doc>
        <return-value>
          <type name="Accessible" c:type="AtspiAccessible*"/>
        </return-value>
      </method>
      <method name="get_matches"
              c:identifier="atspi_collection_get_matches"
              throws="1">
        <doc xml:whitespace="preserve">be sorted.



Gets all #AtspiAccessible objects from the @collection matching a given
@rule.  

#AtspiAccessible objects matching the given match rule.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">All</doc>
          <array name="GLib.Array" c:type="GArray*">
            <type name="Accessible"/>
          </array>
        </return-value>
        <parameters>
          <parameter name="rule" transfer-ownership="none">
            <doc xml:whitespace="preserve">An #AtspiMatchRule describing the match criteria.</doc>
            <type name="MatchRule" c:type="AtspiMatchRule*"/>
          </parameter>
          <parameter name="sortby" transfer-ownership="none">
            <doc xml:whitespace="preserve">An #AtspiCollectionSortOrder specifying the way the results are to</doc>
            <type name="CollectionSortOrder"
                  c:type="AtspiCollectionSortOrder"/>
          </parameter>
          <parameter name="count" transfer-ownership="none">
            <doc xml:whitespace="preserve">The maximum number of results to return, or 0 for no limit.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="traverse" transfer-ownership="none">
            <doc xml:whitespace="preserve">Not supported.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_matches_from"
              c:identifier="atspi_collection_get_matches_from"
              throws="1">
        <doc xml:whitespace="preserve">be sorted.

the objects to be traversed.



Gets all #AtspiAccessible objects from the @collection, before  
@current_object, matching a given @rule.  

#AtspiAccessible objects matching the given match rule that preceed
@current_object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">All</doc>
          <array name="GLib.Array" c:type="GArray*">
            <type name="Accessible"/>
          </array>
        </return-value>
        <parameters>
          <parameter name="current_object" transfer-ownership="none">
            <doc xml:whitespace="preserve">Upon reaching this object, searching should stop.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </parameter>
          <parameter name="rule" transfer-ownership="none">
            <doc xml:whitespace="preserve">An #AtspiMatchRule describing the match criteria.</doc>
            <type name="MatchRule" c:type="AtspiMatchRule*"/>
          </parameter>
          <parameter name="sortby" transfer-ownership="none">
            <doc xml:whitespace="preserve">An #AtspiCollectionSortOrder specifying the way the results are to</doc>
            <type name="CollectionSortOrder"
                  c:type="AtspiCollectionSortOrder"/>
          </parameter>
          <parameter name="tree" transfer-ownership="none">
            <doc xml:whitespace="preserve">An #AtspiCollectionTreeTraversalType specifying restrictions on</doc>
            <type name="CollectionTreeTraversalType"
                  c:type="AtspiCollectionTreeTraversalType"/>
          </parameter>
          <parameter name="count" transfer-ownership="none">
            <doc xml:whitespace="preserve">The maximum number of results to return, or 0 for no limit.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="traverse" transfer-ownership="none">
            <doc xml:whitespace="preserve">Not supported.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_matches_to"
              c:identifier="atspi_collection_get_matches_to"
              throws="1">
        <doc xml:whitespace="preserve">be sorted.

the objects to be traversed.

will be returned. Otherwise (if #FALSE), any accessible may be returned
if it would preceed @current_object in a flattened hierarchy.



Gets all #AtspiAccessible objects from the @collection, after 
@current_object, matching a given @rule.  

#AtspiAccessible objects matching the given match rule after
@current_object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">All</doc>
          <array name="GLib.Array" c:type="GArray*">
            <type name="Accessible"/>
          </array>
        </return-value>
        <parameters>
          <parameter name="current_object" transfer-ownership="none">
            <doc xml:whitespace="preserve">The object at which to start searching.</doc>
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </parameter>
          <parameter name="rule" transfer-ownership="none">
            <doc xml:whitespace="preserve">An #AtspiMatchRule describing the match criteria.</doc>
            <type name="MatchRule" c:type="AtspiMatchRule*"/>
          </parameter>
          <parameter name="sortby" transfer-ownership="none">
            <doc xml:whitespace="preserve">An #AtspiCollectionSortOrder specifying the way the results are to</doc>
            <type name="CollectionSortOrder"
                  c:type="AtspiCollectionSortOrder"/>
          </parameter>
          <parameter name="tree" transfer-ownership="none">
            <doc xml:whitespace="preserve">An #AtspiCollectionTreeTraversalType specifying restrictions on</doc>
            <type name="CollectionTreeTraversalType"
                  c:type="AtspiCollectionTreeTraversalType"/>
          </parameter>
          <parameter name="recurse" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="count" transfer-ownership="none">
            <doc xml:whitespace="preserve">The maximum number of results to return, or 0 for no limit.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="traverse" transfer-ownership="none">
            <doc xml:whitespace="preserve">Not supported.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_ancestor_of"
              c:identifier="atspi_collection_is_ancestor_of"
              throws="1">
        <doc xml:whitespace="preserve">Not yet implemented.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="test" transfer-ownership="none">
            <type name="Accessible" c:type="AtspiAccessible*"/>
          </parameter>
        </parameters>
      </method>
    </interface>
    <enumeration name="CollectionMatchType" c:type="AtspiCollectionMatchType">
      <doc xml:whitespace="preserve">Enumeration used by #AtspiMatchRule to specify
how to interpret #AtspiAccesible objects.</doc>
      <member name="invalid"
              value="0"
              c:identifier="ATSPI_Collection_MATCH_INVALID"/>
      <member name="all" value="1" c:identifier="ATSPI_Collection_MATCH_ALL"/>
      <member name="any" value="2" c:identifier="ATSPI_Collection_MATCH_ANY"/>
      <member name="none"
              value="3"
              c:identifier="ATSPI_Collection_MATCH_NONE"/>
      <member name="empty"
              value="4"
              c:identifier="ATSPI_Collection_MATCH_EMPTY"/>
      <member name="last_defined"
              value="5"
              c:identifier="ATSPI_Collection_MATCH_LAST_DEFINED"/>
    </enumeration>
    <enumeration name="CollectionSortOrder" c:type="AtspiCollectionSortOrder">
      <doc xml:whitespace="preserve">Enumeration used by interface #AtspiCollection to specify
the way #AtspiAccesible objects should be sorted.</doc>
      <member name="invalid"
              value="0"
              c:identifier="ATSPI_Collection_SORT_ORDER_INVALID"/>
      <member name="canonical"
              value="1"
              c:identifier="ATSPI_Collection_SORT_ORDER_CANONICAL"/>
      <member name="flow"
              value="2"
              c:identifier="ATSPI_Collection_SORT_ORDER_FLOW"/>
      <member name="tab"
              value="3"
              c:identifier="ATSPI_Collection_SORT_ORDER_TAB"/>
      <member name="reverse_canonical"
              value="4"
              c:identifier="ATSPI_Collection_SORT_ORDER_REVERSE_CANONICAL"/>
      <member name="reverse_flow"
              value="5"
              c:identifier="ATSPI_Collection_SORT_ORDER_REVERSE_FLOW"/>
      <member name="reverse_tab"
              value="6"
              c:identifier="ATSPI_Collection_SORT_ORDER_REVERSE_TAB"/>
      <member name="last_defined"
              value="7"
              c:identifier="ATSPI_Collection_SORT_ORDER_LAST_DEFINED"/>
    </enumeration>
    <enumeration name="CollectionTreeTraversalType"
                 c:type="AtspiCollectionTreeTraversalType">
      <doc xml:whitespace="preserve">Enumeration used by interface #AtspiCollection to specify
restrictions on #AtspiAccesible objects to be traversed.</doc>
      <member name="restrict_children"
              value="0"
              c:identifier="ATSPI_Collection_TREE_RESTRICT_CHILDREN"/>
      <member name="restrict_sibling"
              value="1"
              c:identifier="ATSPI_Collection_TREE_RESTRICT_SIBLING"/>
      <member name="inorder"
              value="2"
              c:identifier="ATSPI_Collection_TREE_INORDER"/>
      <member name="last_defined"
              value="3"
              c:identifier="ATSPI_Collection_TREE_LAST_DEFINED"/>
    </enumeration>
    <interface name="Component"
               c:symbol-prefix="component"
               c:type="AtspiComponent"
               glib:type-name="AtspiComponent"
               glib:get-type="atspi_component_get_type">
      <method name="contains"
              c:identifier="atspi_component_contains"
              throws="1">
        <doc xml:whitespace="preserve">Queries whether a given #AtspiComponent contains a particular point.

#FALSE otherwise.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if the specified component contains the point (@x, @y),</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="x" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint specifying the x coordinate in question.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint specifying the y coordinate in question.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="ctype" transfer-ownership="none">
            <doc xml:whitespace="preserve">the desired coordinate system of the point (@x, @y) (e.g. CSPI_COORD_TYPE_WINDOW, CSPI_COORD_TYPE_SCREEN).</doc>
            <type name="CoordType" c:type="AtspiCoordType"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_accessible_at_point"
              c:identifier="atspi_component_get_accessible_at_point"
              throws="1">
        <doc xml:whitespace="preserve">Gets the accessible child at a given coordinate within an #AtspiComponent.

specified component which contains the point (@x, @y), or NULL if
no child contains the point.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to an #AtspiAccessible child of the</doc>
          <type name="Accessible" c:type="AtspiAccessible*"/>
        </return-value>
        <parameters>
          <parameter name="x" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint specifying the x coordinate of the point in question.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint specifying the y coordinate of the point in question.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="ctype" transfer-ownership="none">
            <doc xml:whitespace="preserve">the coordinate system of the point (@x, @y) (e.g. ATSPI_COORD_TYPE_WINDOW, ATSPI_COORD_TYPE_SCREEN).</doc>
            <type name="CoordType" c:type="AtspiCoordType"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_alpha"
              c:identifier="atspi_component_get_alpha"
              throws="1">
        <doc xml:whitespace="preserve">Gets the opacity/alpha value of a component, if alpha blending is in use.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the opacity value of a component, as a #gdouble between 0.0 and 1.0.</doc>
          <type name="gdouble" c:type="gdouble"/>
        </return-value>
      </method>
      <method name="get_extents"
              c:identifier="atspi_component_get_extents"
              throws="1">
        <doc xml:whitespace="preserve">Gets the bounding box of the specified #AtspiComponent.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">An #AtspiRect giving the accessible's extents.</doc>
          <type name="Rect" c:type="AtspiRect*"/>
        </return-value>
        <parameters>
          <parameter name="ctype" transfer-ownership="none">
            <doc xml:whitespace="preserve">the desired coordinate system into which to return the results, (e.g. ATSPI_COORD_TYPE_WINDOW, ATSPI_COORD_TYPE_SCREEN).</doc>
            <type name="CoordType" c:type="AtspiCoordType"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_layer"
              c:identifier="atspi_component_get_layer"
              throws="1">
        <doc xml:whitespace="preserve">Queries which layer the component is painted into, to help determine its 
visibility in terms of stacking order.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the #AtspiComponentLayer into which this component is painted.</doc>
          <type name="ComponentLayer" c:type="AtspiComponentLayer"/>
        </return-value>
      </method>
      <method name="get_mdi_z_order"
              c:identifier="atspi_component_get_mdi_z_order"
              throws="1">
        <doc xml:whitespace="preserve">Queries the z stacking order of a component which is in the MDI or window
layer. (Bigger z-order numbers mean nearer the top)

in the MDI layer, or -1 if the component is not in the MDI layer.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #gshort indicating the stacking order of the component</doc>
          <type name="gshort" c:type="gshort"/>
        </return-value>
      </method>
      <method name="get_position"
              c:identifier="atspi_component_get_position"
              throws="1">
        <doc xml:whitespace="preserve">Gets the minimum x and y coordinates of the specified #AtspiComponent.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">An #AtspiPoint giving the @obj's position.</doc>
          <type name="Point" c:type="AtspiPoint*"/>
        </return-value>
        <parameters>
          <parameter name="ctype" transfer-ownership="none">
            <doc xml:whitespace="preserve">the desired coordinate system into which to return the results, (e.g. ATSPI_COORD_TYPE_WINDOW, ATSPI_COORD_TYPE_SCREEN).</doc>
            <type name="CoordType" c:type="AtspiCoordType"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_size"
              c:identifier="atspi_component_get_size"
              throws="1">
        <doc xml:whitespace="preserve">Gets the size of the specified #AtspiComponent.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">An #AtspiPoint giving the @obj's size.</doc>
          <type name="Point" c:type="AtspiPoint*"/>
        </return-value>
      </method>
      <method name="grab_focus"
              c:identifier="atspi_component_grab_focus"
              throws="1">
        <doc xml:whitespace="preserve">Attempts to set the keyboard input focus to the specified
#AtspiComponent.</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="set_extents"
              c:identifier="atspi_component_set_extents"
              throws="1">
        <doc xml:whitespace="preserve">Moves and resizes the specified 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>
        <parameters>
          <parameter name="x" transfer-ownership="none">
            <doc xml:whitespace="preserve">the new vertical position to which the component should be moved.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:whitespace="preserve">the new horizontal position to which the component should be moved.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:whitespace="preserve">the width to which the component should be resized.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:whitespace="preserve">the height to which the component should be resized.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="ctype" transfer-ownership="none">
            <doc xml:whitespace="preserve">the coordinate system in which the position is specified. (e.g. ATSPI_COORD_TYPE_WINDOW, ATSPI_COORD_TYPE_SCREEN).</doc>
            <type name="CoordType" c:type="AtspiCoordType"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_position"
              c:identifier="atspi_component_set_position"
              throws="1">
        <doc xml:whitespace="preserve">Moves the component to the specified position.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if successful; #FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="x" transfer-ownership="none">
            <doc xml:whitespace="preserve">the new vertical position to which the component should be moved.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:whitespace="preserve">the new horizontal position to which the component should be moved.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="ctype" transfer-ownership="none">
            <doc xml:whitespace="preserve">the coordinate system in which the position is specified. (e.g. ATSPI_COORD_TYPE_WINDOW, ATSPI_COORD_TYPE_SCREEN).</doc>
            <type name="CoordType" c:type="AtspiCoordType"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_size"
              c:identifier="atspi_component_set_size"
              throws="1">
        <doc xml:whitespace="preserve">Resizes the specified component to the given coordinates.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if successful; #FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="width" transfer-ownership="none">
            <doc xml:whitespace="preserve">the width to which the component should be resized.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:whitespace="preserve">the height to which the component should be resized.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
    </interface>
    <enumeration name="ComponentLayer" c:type="AtspiComponentLayer">
      <doc xml:whitespace="preserve">The #AtspiComponentLayer of an #AtspiComponent instance indicates its 
relative stacking order with respect to the onscreen visual representation 
of the UI. #AtspiComponentLayer, in combination with #AtspiComponent bounds 
information, can be used to compute the visibility of all or part of a 
component.  This is important in programmatic determination of 
region-of-interest for magnification, and in 
flat screen review models of the screen, as well as
for other uses. Objects residing in two of the #AtspiComponentLayer 
categories support further z-ordering information, with respect to their 
peers in the same layer: namely, @ATSPI_LAYER_WINDOW and 
@ATSPI_LAYER_MDI.  Relative stacking order for other objects within the 
same layer is not available; the recommended heuristic is 
first child paints first. In other words, assume that the 
first siblings in the child list are subject to being overpainted by later 
siblings if their bounds intersect. The order of layers, from bottom to top,
is: @ATSPI_LAYER_BACKGROUND, @ATSPI_LAYER_WINDOW, @ATSPI_LAYER_MDI,
@ATSPI_LAYER_CANVAS, @ATSPI_LAYER_WIDGET, @ATSPI_LAYER_POPUP, and 	   
@ATSPI_LAYER_OVERLAY.</doc>
      <member name="invalid" value="0" c:identifier="ATSPI_LAYER_INVALID"/>
      <member name="background"
              value="1"
              c:identifier="ATSPI_LAYER_BACKGROUND"/>
      <member name="canvas" value="2" c:identifier="ATSPI_LAYER_CANVAS"/>
      <member name="widget" value="3" c:identifier="ATSPI_LAYER_WIDGET"/>
      <member name="mdi" value="4" c:identifier="ATSPI_LAYER_MDI"/>
      <member name="popup" value="5" c:identifier="ATSPI_LAYER_POPUP"/>
      <member name="overlay" value="6" c:identifier="ATSPI_LAYER_OVERLAY"/>
      <member name="window" value="7" c:identifier="ATSPI_LAYER_WINDOW"/>
      <member name="last_defined"
              value="8"
              c:identifier="ATSPI_LAYER_LAST_DEFINED"/>
    </enumeration>
    <enumeration name="CoordType" c:type="AtspiCoordType">
      <doc xml:whitespace="preserve">Enumeration used by #AtspiComponent, #AtspiImage, and #AtspiText interfaces
to specify whether coordinates are relative to the window or the screen.</doc>
      <member name="screen" value="0" c:identifier="ATSPI_COORD_TYPE_SCREEN"/>
      <member name="window" value="1" c:identifier="ATSPI_COORD_TYPE_WINDOW"/>
    </enumeration>
    <constant name="DBUS_INTERFACE_ACCESSIBLE"
              value="org.a11y.atspi.Accessible"
              c:type="ATSPI_DBUS_INTERFACE_ACCESSIBLE">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DBUS_INTERFACE_ACTION"
              value="org.a11y.atspi.Action"
              c:type="ATSPI_DBUS_INTERFACE_ACTION">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DBUS_INTERFACE_APPLICATION"
              value="org.a11y.atspi.Application"
              c:type="ATSPI_DBUS_INTERFACE_APPLICATION">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DBUS_INTERFACE_CACHE"
              value="org.a11y.atspi.Cache"
              c:type="ATSPI_DBUS_INTERFACE_CACHE">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DBUS_INTERFACE_COLLECTION"
              value="org.a11y.atspi.Collection"
              c:type="ATSPI_DBUS_INTERFACE_COLLECTION">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DBUS_INTERFACE_COMPONENT"
              value="org.a11y.atspi.Component"
              c:type="ATSPI_DBUS_INTERFACE_COMPONENT">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DBUS_INTERFACE_DEC"
              value="org.a11y.atspi.DeviceEventController"
              c:type="ATSPI_DBUS_INTERFACE_DEC">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DBUS_INTERFACE_DEVICE_EVENT_LISTENER"
              value="org.a11y.atspi.DeviceEventListener"
              c:type="ATSPI_DBUS_INTERFACE_DEVICE_EVENT_LISTENER">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DBUS_INTERFACE_DOCUMENT"
              value="org.a11y.atspi.Document"
              c:type="ATSPI_DBUS_INTERFACE_DOCUMENT">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DBUS_INTERFACE_EDITABLE_TEXT"
              value="org.a11y.atspi.EditableText"
              c:type="ATSPI_DBUS_INTERFACE_EDITABLE_TEXT">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DBUS_INTERFACE_EVENT_KEYBOARD"
              value="org.a11y.atspi.Event.Keyboard"
              c:type="ATSPI_DBUS_INTERFACE_EVENT_KEYBOARD">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DBUS_INTERFACE_EVENT_MOUSE"
              value="org.a11y.atspi.Event.Mouse"
              c:type="ATSPI_DBUS_INTERFACE_EVENT_MOUSE">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DBUS_INTERFACE_EVENT_OBJECT"
              value="org.a11y.atspi.Event.Object"
              c:type="ATSPI_DBUS_INTERFACE_EVENT_OBJECT">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DBUS_INTERFACE_HYPERLINK"
              value="org.a11y.atspi.Hyperlink"
              c:type="ATSPI_DBUS_INTERFACE_HYPERLINK">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DBUS_INTERFACE_HYPERTEXT"
              value="org.a11y.atspi.Hypertext"
              c:type="ATSPI_DBUS_INTERFACE_HYPERTEXT">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DBUS_INTERFACE_IMAGE"
              value="org.a11y.atspi.Image"
              c:type="ATSPI_DBUS_INTERFACE_IMAGE">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DBUS_INTERFACE_REGISTRY"
              value="org.a11y.atspi.Registry"
              c:type="ATSPI_DBUS_INTERFACE_REGISTRY">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DBUS_INTERFACE_SELECTION"
              value="org.a11y.atspi.Selection"
              c:type="ATSPI_DBUS_INTERFACE_SELECTION">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DBUS_INTERFACE_SOCKET"
              value="org.a11y.atspi.Socket"
              c:type="ATSPI_DBUS_INTERFACE_SOCKET">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DBUS_INTERFACE_TABLE"
              value="org.a11y.atspi.Table"
              c:type="ATSPI_DBUS_INTERFACE_TABLE">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DBUS_INTERFACE_TEXT"
              value="org.a11y.atspi.Text"
              c:type="ATSPI_DBUS_INTERFACE_TEXT">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DBUS_INTERFACE_VALUE"
              value="org.a11y.atspi.Value"
              c:type="ATSPI_DBUS_INTERFACE_VALUE">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DBUS_NAME_REGISTRY"
              value="org.a11y.atspi.Registry"
              c:type="ATSPI_DBUS_NAME_REGISTRY">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DBUS_PATH_DEC"
              value="/org/a11y/atspi/registry/deviceeventcontroller"
              c:type="ATSPI_DBUS_PATH_DEC">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DBUS_PATH_NULL"
              value="/org/a11y/atspi/null"
              c:type="ATSPI_DBUS_PATH_NULL">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DBUS_PATH_REGISTRY"
              value="/org/a11y/atspi/registry"
              c:type="ATSPI_DBUS_PATH_REGISTRY">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DBUS_PATH_ROOT"
              value="/org/a11y/atspi/accessible/root"
              c:type="ATSPI_DBUS_PATH_ROOT">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <record name="DeviceEvent" c:type="AtspiDeviceEvent">
      <field name="type" writable="1">
        <type name="EventType" c:type="AtspiEventType"/>
      </field>
      <field name="id" writable="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="hw_code" writable="1">
        <type name="gushort" c:type="gushort"/>
      </field>
      <field name="modifiers" writable="1">
        <type name="gushort" c:type="gushort"/>
      </field>
      <field name="timestamp" writable="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="event_string" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="is_text" writable="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
    </record>
    <class name="DeviceListener"
           c:symbol-prefix="device_listener"
           c:type="AtspiDeviceListener"
           parent="GObject.Object"
           glib:type-name="AtspiDeviceListener"
           glib:get-type="atspi_device_listener_get_type"
           glib:type-struct="DeviceListenerClass">
      <constructor name="new" c:identifier="atspi_device_listener_new">
        <doc xml:whitespace="preserve">Creates a new #AtspiDeviceListener with a specified callback function.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to a newly-created #AtspiDeviceListener.</doc>
          <type name="DeviceListener" c:type="AtspiDeviceListener*"/>
        </return-value>
        <parameters>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="notified"
                     closure="1"
                     destroy="2">
            <doc xml:whitespace="preserve">an #AtspiDeviceListenerCB callback function, or NULL.</doc>
            <type name="DeviceListenerCB" c:type="AtspiDeviceListenerCB"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:whitespace="preserve">a pointer to data which will be passed to the callback when invoked.</doc>
            <type name="gpointer" c:type="void*"/>
          </parameter>
          <parameter name="callback_destroyed"
                     transfer-ownership="none"
                     scope="async">
            <doc xml:whitespace="preserve">A #GDestroyNotify called when the listener is freed and data associated with the callback should be freed. It can be NULL.</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_simple"
                   c:identifier="atspi_device_listener_new_simple">
        <doc xml:whitespace="preserve">Creates a new #AtspiDeviceListener with a specified callback function.
This method is similar to #atspi_device_listener_new, but callback
takes no user data.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to a newly-created #AtspiDeviceListener.</doc>
          <type name="DeviceListener" c:type="AtspiDeviceListener*"/>
        </return-value>
        <parameters>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="notified"
                     destroy="1">
            <doc xml:whitespace="preserve">an #AtspiDeviceListenerCB callback function, or NULL.</doc>
            <type name="DeviceListenerSimpleCB"
                  c:type="AtspiDeviceListenerSimpleCB"/>
          </parameter>
          <parameter name="callback_destroyed"
                     transfer-ownership="none"
                     scope="async">
            <doc xml:whitespace="preserve">A #GDestroyNotify called when the listener is freed and data associated with the callback should be freed.  It an be NULL.</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </constructor>
      <virtual-method name="device_event">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter transfer-ownership="none">
            <type name="DeviceEvent" c:type="AtspiDeviceEvent*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="add_callback"
              c:identifier="atspi_device_listener_add_callback">
        <doc xml:whitespace="preserve">Adds an in-process callback function to an existing #AtspiDeviceListener.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if successful, otherwise #FALSE.</doc>
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="notified"
                     closure="2"
                     destroy="1">
            <doc xml:whitespace="preserve">an #AtspiDeviceListenerCB function pointer.</doc>
            <type name="DeviceListenerCB" c:type="AtspiDeviceListenerCB"/>
          </parameter>
          <parameter name="callback_destroyed"
                     transfer-ownership="none"
                     scope="async">
            <doc xml:whitespace="preserve">A #GDestroyNotify called when the listener is freed and data associated with the callback should be freed. It can be NULL.</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:whitespace="preserve">a pointer to data which will be passed to the callback when invoked.</doc>
            <type name="gpointer" c:type="void*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_callback"
              c:identifier="atspi_device_listener_remove_callback">
        <doc xml:whitespace="preserve">Removes an in-process callback function from an existing 
#AtspiDeviceListener.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if successful, otherwise #FALSE.</doc>
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="callback" transfer-ownership="none" scope="call">
            <doc xml:whitespace="preserve">an #AtspiDeviceListenerCB function pointer.</doc>
            <type name="DeviceListenerCB" c:type="AtspiDeviceListenerCB"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="id">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="callbacks">
        <type name="GLib.List" c:type="GList*">
          <type name="gpointer" c:type="gpointer"/>
        </type>
      </field>
    </class>
    <callback name="DeviceListenerCB" c:type="AtspiDeviceListenerCB">
      <doc xml:whitespace="preserve">A callback function prototype via which clients receive device event notifications.

relayed to the currently focussed application, #FALSE if the event delivery should proceed as normal.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">#TRUE if the client wishes to consume/preempt the event, preventing it from being</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="stroke" transfer-ownership="full">
          <doc xml:whitespace="preserve">The #AtspiDeviceEvent for which notification is being received.</doc>
          <type name="DeviceEvent" c:type="AtspiDeviceEvent*"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none" closure="1">
          <doc xml:whitespace="preserve">Data which is passed to the client each time this callback is notified.</doc>
          <type name="gpointer" c:type="void*"/>
        </parameter>
      </parameters>
    </callback>
    <record name="DeviceListenerClass"
            c:type="AtspiDeviceListenerClass"
            glib:is-gtype-struct-for="DeviceListener">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="device_event">
        <callback name="device_event">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter transfer-ownership="none">
              <type name="DeviceListener" c:type="AtspiDeviceListener*"/>
            </parameter>
            <parameter transfer-ownership="none">
              <type name="DeviceEvent" c:type="AtspiDeviceEvent*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <callback name="DeviceListenerSimpleCB"
              c:type="AtspiDeviceListenerSimpleCB">
      <doc xml:whitespace="preserve">Similar to #AtspiDeviceListenerCB, but with no user data.

relayed to the currently focussed application, #FALSE if the event delivery should proceed as normal.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">#TRUE if the client wishes to consume/preempt the event, preventing it from being</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="stroke" transfer-ownership="full">
          <doc xml:whitespace="preserve">The #AtspiDeviceEvent for which notification is being received.</doc>
          <type name="DeviceEvent" c:type="AtspiDeviceEvent*"/>
        </parameter>
      </parameters>
    </callback>
    <interface name="Document"
               c:symbol-prefix="document"
               c:type="AtspiDocument"
               glib:type-name="AtspiDocument"
               glib:get-type="atspi_document_get_type">
      <method name="get_attribute_value"
              c:identifier="atspi_document_get_attribute_value"
              throws="1">
        <doc xml:whitespace="preserve">Gets the value of a single attribute, if specified for the document as a whole.

an empty string if the attribute is unspecified for the object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a string corresponding to the value of the specified attribute, or</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="attribute" transfer-ownership="none">
            <doc xml:whitespace="preserve">a string indicating the name of a specific attribute.</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_attributes"
              c:identifier="atspi_document_get_attributes"
              throws="1">
        <doc xml:whitespace="preserve">Gets all constant attributes for the document as a whole. For attributes
that change within the document content, see @atspi_text_get_attribute_run instead.

containing the constant attributes of the document, as name-value pairs.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a #GHashTable</doc>
          <type name="GLib.HashTable" c:type="GHashTable*">
            <type name="utf8"/>
            <type name="utf8"/>
          </type>
        </return-value>
      </method>
      <method name="get_locale"
              c:identifier="atspi_document_get_locale"
              throws="1">
        <doc xml:whitespace="preserve">Gets the locale associated with the document's content, 
e.g. the locale for LOCALE_TYPE_MESSAGES.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a string compliant with the POSIX standard for locale description.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
    </interface>
    <constant name="EVENTTYPE_COUNT" value="4" c:type="ATSPI_EVENTTYPE_COUNT">
      <type name="gint" c:type="gint"/>
    </constant>
    <interface name="EditableText"
               c:symbol-prefix="editable_text"
               c:type="AtspiEditableText"
               glib:type-name="AtspiEditableText"
               glib:get-type="atspi_editable_text_get_type">
      <method name="copy_text"
              c:identifier="atspi_editable_text_copy_text"
              throws="1">
        <doc xml:whitespace="preserve">Copies text from an #AtspiEditableText object into the system clipboard.

see: #atspi_editable_text_paste_text</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if the operation was successful, otherwise #FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="start_pos" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint indicating the starting character offset of the text to copy.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="end_pos" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint indicating the offset of the first character past the end of the text section to be copied.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="cut_text"
              c:identifier="atspi_editable_text_cut_text"
              throws="1">
        <doc xml:whitespace="preserve">Deletes text from an #AtspiEditableText object, copying the
excised portion into the system clipboard.

see: #atspi_editable_text_paste_text</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if operation was successful, #FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="start_pos" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint indicating the starting character offset of the text to cut.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="end_pos" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint indicating the offset of the first character past the end of the text section to be cut.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="delete_text"
              c:identifier="atspi_editable_text_delete_text"
              throws="1">
        <doc xml:whitespace="preserve">Deletes text from an #AtspiEditableText object, without copying the
excised portion into the system clipboard.

see: #atspi_editable_text_cut_text</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if the operation was successful, otherwise #FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="start_pos" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint indicating the starting character offset of the text to delete.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="end_pos" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint indicating the offset of the first character past the end of the text section to be deleted.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="insert_text"
              c:identifier="atspi_editable_text_insert_text"
              throws="1">
        <doc xml:whitespace="preserve">Inserts text into an #AtspiEditableText object.
As with all character offsets, the specified @position may not be the
same as the resulting byte offset, since the text is in a
variable-width encoding.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if the operation was successful, otherwise #FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="position" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint indicating the character offset at which to insert the new text.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="text" transfer-ownership="none">
            <doc xml:whitespace="preserve">a string representing the text to insert, in UTF-8 encoding.</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:whitespace="preserve">the number of characters of text to insert. If the character count of text is less than or equal to length, the entire contents of text will be inserted.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="paste_text"
              c:identifier="atspi_editable_text_paste_text"
              throws="1">
        <doc xml:whitespace="preserve">Inserts text from the system clipboard into an #AtspiEditableText object.
As with all character offsets, the specified @position may not be the
same as the resulting byte offset, since the text is in a
variable-width encoding.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if the operation was successful, otherwise #FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="position" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint indicating the character offset at which to insert the new text.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_text_contents"
              c:identifier="atspi_editable_text_set_text_contents"
              throws="1">
        <doc xml:whitespace="preserve">Replace the entire text contents of an #AtspiEditableText object.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if the operation was successful, otherwise #FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="new_contents" transfer-ownership="none">
            <doc xml:whitespace="preserve">a character string, encoded in UTF-8, which is to become the new text contents of the #AtspiEditableText object.</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
    </interface>
    <enumeration name="Error" c:type="AtspiError">
      <member name="application_gone"
              value="0"
              c:identifier="ATSPI_ERROR_APPLICATION_GONE"/>
      <member name="ipc" value="1" c:identifier="ATSPI_ERROR_IPC"/>
    </enumeration>
    <record name="Event"
            c:type="AtspiEvent"
            glib:type-name="AtspiEvent"
            glib:get-type="atspi_event_get_type"
            c:symbol-prefix="event">
      <field name="type" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="source" writable="1">
        <type name="Accessible" c:type="AtspiAccessible*"/>
      </field>
      <field name="detail1" writable="1">
        <type name="gint" c:type="gint"/>
      </field>
      <field name="detail2" writable="1">
        <type name="gint" c:type="gint"/>
      </field>
      <field name="any_data" writable="1">
        <type name="GObject.Value" c:type="GValue"/>
      </field>
      <function name="main" c:identifier="atspi_event_main">
        <doc xml:whitespace="preserve">Starts/enters the main event loop for the AT-SPI services.

NOTE: This method does not return control; it is exited via a call to
#atspi_event_quit from within an event handler.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </function>
      <function name="quit" c:identifier="atspi_event_quit">
        <doc xml:whitespace="preserve">Quits the last main event loop for the AT-SPI services,
See: #atspi_event_main</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </function>
    </record>
    <class name="EventListener"
           c:symbol-prefix="event_listener"
           c:type="AtspiEventListener"
           parent="GObject.Object"
           glib:type-name="AtspiEventListener"
           glib:get-type="atspi_event_listener_get_type"
           glib:type-struct="EventListenerClass">
      <constructor name="new" c:identifier="atspi_event_listener_new">
        <doc xml:whitespace="preserve">Creates a new #AtspiEventListener associated with a specified @callback.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A new #AtspiEventListener.</doc>
          <type name="EventListener" c:type="AtspiEventListener*"/>
        </return-value>
        <parameters>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="notified"
                     closure="1"
                     destroy="2">
            <doc xml:whitespace="preserve">An #AtspiEventListenerSimpleCB to be called when an event is fired.</doc>
            <type name="EventListenerCB" c:type="AtspiEventListenerCB"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:whitespace="preserve">data to pass to the callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="callback_destroyed"
                     transfer-ownership="none"
                     scope="async">
            <doc xml:whitespace="preserve">A #GDestroyNotify called when the listener is freed and data associated with the callback should be freed.  Can be NULL.</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_simple"
                   c:identifier="atspi_event_listener_new_simple">
        <doc xml:whitespace="preserve">Creates a new #AtspiEventListener associated with a specified @callback.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A new #AtspiEventListener.</doc>
          <type name="EventListener" c:type="AtspiEventListener*"/>
        </return-value>
        <parameters>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="notified"
                     destroy="1">
            <doc xml:whitespace="preserve">An #AtspiEventListenerSimpleCB to be called when an event is fired.</doc>
            <type name="EventListenerSimpleCB"
                  c:type="AtspiEventListenerSimpleCB"/>
          </parameter>
          <parameter name="callback_destroyed"
                     transfer-ownership="none"
                     scope="async">
            <doc xml:whitespace="preserve">A #GDestroyNotify called when the listener is freed and data associated with the callback should be freed.  Can be NULL.</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="deregister_from_callback"
                c:identifier="atspi_event_listener_deregister_from_callback"
                throws="1">
        <doc xml:whitespace="preserve">Deregisters an #AtspiEventListenerCB from the registry, for a specific
event type.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if successful, otherwise #FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="call"
                     closure="1">
            <doc xml:whitespace="preserve">the #AtspiEventListenerCB registered against an event type.</doc>
            <type name="EventListenerCB" c:type="AtspiEventListenerCB"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:whitespace="preserve">User data that was passed in for this callback.</doc>
            <type name="gpointer" c:type="void*"/>
          </parameter>
          <parameter name="event_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">a string specifying the event type for which this listener is to be deregistered.</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="deregister_no_data"
                c:identifier="atspi_event_listener_deregister_no_data"
                throws="1">
        <doc xml:whitespace="preserve">deregisters an #AtspiEventListenerSimpleCB from the registry, for a specific
event type.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if successful, otherwise #FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="callback" transfer-ownership="none" scope="call">
            <doc xml:whitespace="preserve">the #AtspiEventListenerSimpleCB registered against an event type.</doc>
            <type name="EventListenerSimpleCB"
                  c:type="AtspiEventListenerSimpleCB"/>
          </parameter>
          <parameter name="event_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">a string specifying the event type for which this listener is to be deregistered.</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="register_from_callback"
                c:identifier="atspi_event_listener_register_from_callback"
                throws="1">
        <doc xml:whitespace="preserve">Registers an #AtspiEventListenerCB against an @event_type.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if successfull, otherwise #FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="notified"
                     closure="1"
                     destroy="2">
            <doc xml:whitespace="preserve">the #AtspiEventListenerCB to be registered against an event type.</doc>
            <type name="EventListenerCB" c:type="AtspiEventListenerCB"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:whitespace="preserve">User data to be passed to the callback.</doc>
            <type name="gpointer" c:type="void*"/>
          </parameter>
          <parameter name="callback_destroyed"
                     transfer-ownership="none"
                     scope="async">
            <doc xml:whitespace="preserve">A #GDestroyNotify called when the callback is destroyed.</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
          <parameter name="event_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">a character string indicating the type of events for which notification is requested.  See #atspi_event_listener_register for a description of the format.</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="register_no_data"
                c:identifier="atspi_event_listener_register_no_data"
                throws="1">
        <doc xml:whitespace="preserve">Registers an #AtspiEventListenetSimpleCB. The method is similar to 
#atspi_event_listener_register, but @callback takes no user_data.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if successfull, otherwise #FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="notified"
                     destroy="1">
            <doc xml:whitespace="preserve">the #AtspiEventListenerSimpleCB to be registered against an event type.</doc>
            <type name="EventListenerSimpleCB"
                  c:type="AtspiEventListenerSimpleCB"/>
          </parameter>
          <parameter name="callback_destroyed"
                     transfer-ownership="none"
                     scope="async">
            <doc xml:whitespace="preserve">A #GDestroyNotify called when the callback is destroyed.</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
          <parameter name="event_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">a character string indicating the type of events for which notification is requested.  Format is EventClass:major_type:minor_type:detail where all subfields other than EventClass are optional. EventClasses include "object", "window", "mouse", and toolkit events (e.g. "Gtk", "AWT"). Examples: "focus:", "Gtk:GtkWidget:button_press_event".</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </function>
      <method name="deregister"
              c:identifier="atspi_event_listener_deregister"
              throws="1">
        <doc xml:whitespace="preserve">Deregisters an #AtspiEventListener from the registry, for a specific
event type.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if successful, otherwise #FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="event_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">a string specifying the event type for which this listener is to be deregistered.</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="register"
              c:identifier="atspi_event_listener_register"
              throws="1">
        <doc xml:whitespace="preserve">Adds an in-process callback function to an existing #AtspiEventListener.

Legal object event types:

(property change events)

object:property-change
object:property-change:accessible-name
object:property-change:accessible-description
object:property-change:accessible-parent
object:property-change:accessible-value
object:property-change:accessible-role
object:property-change:accessible-table-caption
object:property-change:accessible-table-column-description
object:property-change:accessible-table-column-header
object:property-change:accessible-table-row-description
object:property-change:accessible-table-row-header
object:property-change:accessible-table-summary

(other object events)

object:state-changed 
object:children-changed
object:visible-data-changed
object:selection-changed
object:text-selection-changed
object:text-changed
object:text-caret-moved
object:row-inserted
object:row-reordered
object:row-deleted
object:column-inserted
object:column-reordered
object:column-deleted
object:model-changed
object:active-descendant-changed

(window events)

window:minimize
window:maximize
window:restore
window:close
window:create
window:reparent
window:desktop-create
window:desktop-destroy
window:activate
window:deactivate
window:raise
window:lower
window:move
window:resize
window:shade
window:unshade
window:restyle

(other events)

focus:
mouse:abs
mouse:rel
mouse:b1p
mouse:b1r
mouse:b2p
mouse:b2r
mouse:b3p
mouse:b3r

NOTE: this character string may be UTF-8, but should not contain byte 
value 56
(ascii ':'), except as a delimiter, since non-UTF-8 string
delimiting functions are used internally.
In general, listening to
toolkit-specific events is not recommended.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if successful, otherwise #FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="event_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">a character string indicating the type of events for which notification is requested.  Format is EventClass:major_type:minor_type:detail where all subfields other than EventClass are optional. EventClasses include "object", "window", "mouse", and toolkit events (e.g. "Gtk", "AWT"). Examples: "focus:", "Gtk:GtkWidget:button_press_event".</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="callback">
        <type name="EventListenerCB" c:type="AtspiEventListenerCB"/>
      </field>
      <field name="user_data">
        <type name="gpointer" c:type="void*"/>
      </field>
      <field name="cb_destroyed">
        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
      </field>
    </class>
    <callback name="EventListenerCB" c:type="AtspiEventListenerCB">
      <doc xml:whitespace="preserve">A function prototype for callbacks via which clients are notified of AT-SPI events.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="event" transfer-ownership="full">
          <doc xml:whitespace="preserve">The event for which notification is sent.</doc>
          <type name="Event" c:type="AtspiEvent*"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none" closure="1">
          <doc xml:whitespace="preserve">User data which is passed to the callback each time a notification takes place.</doc>
          <type name="gpointer" c:type="void*"/>
        </parameter>
      </parameters>
    </callback>
    <record name="EventListenerClass"
            c:type="AtspiEventListenerClass"
            glib:is-gtype-struct-for="EventListener">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <record name="EventListenerMode" c:type="AtspiEventListenerMode">
      <field name="synchronous" writable="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="preemptive" writable="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="global" writable="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
    </record>
    <callback name="EventListenerSimpleCB" c:type="AtspiEventListenerSimpleCB">
      <doc xml:whitespace="preserve">Like #AtspiEventlistenerCB, but with no user_data.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="event" transfer-ownership="full">
          <doc xml:whitespace="preserve">The event for which notification is sent.</doc>
          <type name="Event" c:type="AtspiEvent*"/>
        </parameter>
      </parameters>
    </callback>
    <enumeration name="EventType" c:type="AtspiEventType">
      <doc xml:whitespace="preserve">Enumeration used to specify the event types of interest to an 
#AtspiEventListener, or 
to identify the type of an event for which notification has been sent.</doc>
      <member name="key_pressed_event"
              value="0"
              c:identifier="ATSPI_KEY_PRESSED_EVENT"/>
      <member name="key_released_event"
              value="1"
              c:identifier="ATSPI_KEY_RELEASED_EVENT"/>
      <member name="button_pressed_event"
              value="2"
              c:identifier="ATSPI_BUTTON_PRESSED_EVENT"/>
      <member name="button_released_event"
              value="3"
              c:identifier="ATSPI_BUTTON_RELEASED_EVENT"/>
    </enumeration>
    <class name="Hyperlink"
           c:symbol-prefix="hyperlink"
           c:type="AtspiHyperlink"
           parent="Object"
           glib:type-name="AtspiHyperlink"
           glib:get-type="atspi_hyperlink_get_type"
           glib:type-struct="HyperlinkClass">
      <method name="get_end_index"
              c:identifier="atspi_hyperlink_get_end_index"
              throws="1">
        <doc xml:whitespace="preserve">Get the ending character offset of the text range associated with
a #AtspiHyperlink, in its originating #AtspiHypertext.</doc>
        <return-value transfer-ownership="none">
          <type name="gint" c:type="gint"/>
        </return-value>
      </method>
      <method name="get_index_range"
              c:identifier="atspi_hyperlink_get_index_range"
              throws="1">
        <doc xml:whitespace="preserve">Get the starting and ending character offsets of the text range associated with
a #AtspiHyperlink, in its originating #AtspiHypertext.</doc>
        <return-value transfer-ownership="full">
          <type name="Range" c:type="AtspiRange*"/>
        </return-value>
      </method>
      <method name="get_n_anchors"
              c:identifier="atspi_hyperlink_get_n_anchors"
              throws="1">
        <doc xml:whitespace="preserve">Get the total number of anchors which an #AtspiHyperlink implementor has.
Though typical hyperlinks have only one anchor, client-side image maps and
other hypertext objects may potentially activate or refer to multiple
URIs.  For each anchor there is a corresponding URI and object.
see atspi_hyperlink_get_uri() and atspi_hyperlink_get_object().</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #gint indicating the number of anchors in this hyperlink.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </method>
      <method name="get_object"
              c:identifier="atspi_hyperlink_get_object"
              throws="1">
        <doc xml:whitespace="preserve">Get the object associated with a particular hyperlink anchor, as an #Accessible. 

associated with the @ith anchor of the specified #AtspiHyperlink.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtspiAccessible that represents the object</doc>
          <type name="Accessible" c:type="AtspiAccessible*"/>
        </return-value>
        <parameters>
          <parameter name="i" transfer-ownership="none">
            <doc xml:whitespace="preserve">a (zero-index) long integer indicating which hyperlink anchor to query.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_start_index"
              c:identifier="atspi_hyperlink_get_start_index"
              throws="1">
        <doc xml:whitespace="preserve">Get the starting character offset of the text range associated with
a #AtspiHyperlink, in its originating #AtspiHypertext.</doc>
        <return-value transfer-ownership="none">
          <type name="gint" c:type="gint"/>
        </return-value>
      </method>
      <method name="get_uri" c:identifier="atspi_hyperlink_get_uri" throws="1">
        <doc xml:whitespace="preserve">Get the URI associated with a particular hyperlink anchor.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a UTF-8 string giving the URI of the @ith hyperlink anchor.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="i" transfer-ownership="none">
            <doc xml:whitespace="preserve">a (zero-index) integer indicating which hyperlink anchor to query.</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_valid"
              c:identifier="atspi_hyperlink_is_valid"
              throws="1">
        <doc xml:whitespace="preserve">Tell whether an #AtspiHyperlink object is still valid with respect to its
originating hypertext object.

to its originating #AtspiHypertext object, #FALSE otherwise.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE of the specified #AtspiHyperlink is still valid with respect</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </method>
      <field name="parent">
        <type name="Object" c:type="AtspiObject"/>
      </field>
    </class>
    <record name="HyperlinkClass"
            c:type="AtspiHyperlinkClass"
            glib:is-gtype-struct-for="Hyperlink">
      <field name="parent_class">
        <type name="ObjectClass" c:type="AtspiObjectClass"/>
      </field>
    </record>
    <interface name="Hypertext"
               c:symbol-prefix="hypertext"
               c:type="AtspiHypertext"
               glib:type-name="AtspiHypertext"
               glib:get-type="atspi_hypertext_get_type">
      <method name="get_link"
              c:identifier="atspi_hypertext_get_link"
              throws="1">
        <doc xml:whitespace="preserve">Gets the #AtspiHyperlink object at a specified index.

@link_index.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">the #AtspiHyperlink object specified by</doc>
          <type name="Hyperlink" c:type="AtspiHyperlink*"/>
        </return-value>
        <parameters>
          <parameter name="link_index" transfer-ownership="none">
            <doc xml:whitespace="preserve">a (zero-index) #gint indicating which hyperlink to query.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_link_index"
              c:identifier="atspi_hypertext_get_link_index"
              throws="1">
        <doc xml:whitespace="preserve">Gets the index of the #AtspiHyperlink object at a specified
character offset.

character offset @character_offset, or -1 if there is
no hyperlink at the specified character offset.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the linkIndex of the #AtspiHyperlink active at</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="character_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint specifying the character offset to query.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_n_links"
              c:identifier="atspi_hypertext_get_n_links"
              throws="1">
        <doc xml:whitespace="preserve">Gets the total number of #AtspiHyperlink objects that an
#AtspiHypertext implementor has.

of the #AtspiHypertext implementor, or -1 if
the number cannot be determined (for example, if the
#AtspiHypertext object is so large that it is not
all currently in the memory cache).</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #gint indicating the number of #AtspiHyperlink objects</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </method>
    </interface>
    <interface name="Image"
               c:symbol-prefix="image"
               c:type="AtspiImage"
               glib:type-name="AtspiImage"
               glib:get-type="atspi_image_get_type">
      <method name="get_image_description"
              c:identifier="atspi_image_get_image_description"
              throws="1">
        <doc xml:whitespace="preserve">Gets the description of the image displayed in an #AtspiImage object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a UTF-8 string describing the image.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_image_extents"
              c:identifier="atspi_image_get_image_extents"
              throws="1">
        <doc xml:whitespace="preserve">Gets the bounding box of the image displayed in a
specified #AtspiImage implementor.

width, and height are specified.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to an #AtspiRect corresponding to the image's bounding box. The minimum x and y coordinates,</doc>
          <type name="Rect" c:type="AtspiRect*"/>
        </return-value>
        <parameters>
          <parameter name="ctype" transfer-ownership="none">
            <doc xml:whitespace="preserve">the desired coordinate system into which to return the results, (e.g. ATSPI_COORD_TYPE_WINDOW, ATSPI_COORD_TYPE_SCREEN).</doc>
            <type name="CoordType" c:type="AtspiCoordType"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_image_locale"
              c:identifier="atspi_image_get_image_locale"
              throws="1">
        <doc xml:whitespace="preserve">Gets the locale associated with an image and its textual representation.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A POSIX LC_MESSAGES-style locale value for image description and text.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_image_position"
              c:identifier="atspi_image_get_image_position"
              throws="1">
        <doc xml:whitespace="preserve">Gets the minimum x and y coordinates of the image displayed in a
specified #AtspiImage implementor.

minimum coordinates of the displayed image.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to an #AtspiPoint where x and y correspond to the</doc>
          <type name="Point" c:type="AtspiPoint*"/>
        </return-value>
        <parameters>
          <parameter name="ctype" transfer-ownership="none">
            <doc xml:whitespace="preserve">the desired coordinate system into which to return the results, (e.g. ATSPI_COORD_TYPE_WINDOW, ATSPI_COORD_TYPE_SCREEN).</doc>
            <type name="CoordType" c:type="AtspiCoordType"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_image_size"
              c:identifier="atspi_image_get_image_size"
              throws="1">
        <doc xml:whitespace="preserve">Gets the size of the image displayed in a specified #AtspiImage object.

the image's width and y corresponds to the image's height.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to an #AtspiPoint where x corresponds to</doc>
          <type name="Point" c:type="AtspiPoint*"/>
        </return-value>
      </method>
    </interface>
    <constant name="KEYEVENTTYPE_COUNT"
              value="2"
              c:type="ATSPI_KEYEVENTTYPE_COUNT">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="KEYSYNTHTYPE_COUNT"
              value="5"
              c:type="ATSPI_KEYSYNTHTYPE_COUNT">
      <type name="gint" c:type="gint"/>
    </constant>
    <record name="KeyDefinition"
            c:type="AtspiKeyDefinition"
            glib:type-name="AtspiKeyDefinition"
            glib:get-type="atspi_key_definition_get_type"
            c:symbol-prefix="key_definition">
      <field name="keycode" writable="1">
        <type name="gint" c:type="gint"/>
      </field>
      <field name="keysym" writable="1">
        <type name="gint" c:type="gint"/>
      </field>
      <field name="keystring" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="unused" writable="1">
        <type name="gint" c:type="gint"/>
      </field>
    </record>
    <enumeration name="KeyEventType" c:type="AtspiKeyEventType">
      <doc xml:whitespace="preserve">Deprecated. Should not be used.</doc>
      <member name="pressed" value="0" c:identifier="ATSPI_KEY_PRESSED"/>
      <member name="released" value="1" c:identifier="ATSPI_KEY_RELEASED"/>
    </enumeration>
    <enumeration name="KeyListenerSyncType" c:type="AtspiKeyListenerSyncType">
      <member name="nosync" value="0" c:identifier="ATSPI_KEYLISTENER_NOSYNC"/>
      <member name="synchronous"
              value="1"
              c:identifier="ATSPI_KEYLISTENER_SYNCHRONOUS"/>
      <member name="canconsume"
              value="2"
              c:identifier="ATSPI_KEYLISTENER_CANCONSUME"/>
      <member name="all_windows"
              value="4"
              c:identifier="ATSPI_KEYLISTENER_ALL_WINDOWS"/>
    </enumeration>
    <enumeration name="KeySynthType" c:type="AtspiKeySynthType">
      <doc xml:whitespace="preserve">Enumeration used when synthesizing keyboard input via
#atspi_generate_keyboard_event.</doc>
      <member name="press" value="0" c:identifier="ATSPI_KEY_PRESS"/>
      <member name="release" value="1" c:identifier="ATSPI_KEY_RELEASE"/>
      <member name="pressrelease"
              value="2"
              c:identifier="ATSPI_KEY_PRESSRELEASE"/>
      <member name="sym" value="3" c:identifier="ATSPI_KEY_SYM"/>
      <member name="string" value="4" c:identifier="ATSPI_KEY_STRING"/>
    </enumeration>
    <enumeration name="LocaleType" c:type="AtspiLocaleType">
      <doc xml:whitespace="preserve">Used by interfaces #AtspiText and #AtspiDocument, this
enumeration corresponds to the POSIX 'setlocale' enum values.</doc>
      <member name="messages"
              value="0"
              c:identifier="ATSPI_LOCALE_TYPE_MESSAGES"/>
      <member name="collate"
              value="1"
              c:identifier="ATSPI_LOCALE_TYPE_COLLATE"/>
      <member name="ctype" value="2" c:identifier="ATSPI_LOCALE_TYPE_CTYPE"/>
      <member name="monetary"
              value="3"
              c:identifier="ATSPI_LOCALE_TYPE_MONETARY"/>
      <member name="numeric"
              value="4"
              c:identifier="ATSPI_LOCALE_TYPE_NUMERIC"/>
      <member name="time" value="5" c:identifier="ATSPI_LOCALE_TYPE_TIME"/>
    </enumeration>
    <constant name="MATCHTYPES_COUNT"
              value="6"
              c:type="ATSPI_MATCHTYPES_COUNT">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="MODIFIERTYPE_COUNT"
              value="8"
              c:type="ATSPI_MODIFIERTYPE_COUNT">
      <type name="gint" c:type="gint"/>
    </constant>
    <class name="MatchRule"
           c:symbol-prefix="match_rule"
           c:type="AtspiMatchRule"
           parent="GObject.Object"
           glib:type-name="AtspiMatchRule"
           glib:get-type="atspi_match_rule_get_type"
           glib:type-struct="MatchRuleClass">
      <constructor name="new" c:identifier="atspi_match_rule_new">
        <doc xml:whitespace="preserve">@states.

attributes to match.

interpret @attributes.

NULL if not applicable.  Interface names should be specified
by their DBus names (org.a11y.Atspi.Accessible,
org.a11y.Atspi.Component, etc).

interpret @interfaces.

not applicable.

interpret @roles.

it should not. For example, if the match rule defines that a match is
an object of ROLE_HEADING which has STATE_FOCUSABLE and a click action, 
inverting it would match all objects that are not of ROLE_HEADING, 
focusable and clickable at the same time.  

Creates a new #AtspiMatchRule with specified @states, @attributes, 
@interfaces, and @roles.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A new #AtspiMatchRule.</doc>
          <type name="MatchRule" c:type="AtspiMatchRule*"/>
        </return-value>
        <parameters>
          <parameter name="states" transfer-ownership="none">
            <doc xml:whitespace="preserve">An #AtspiStateSet specifying the states to match or NULL if none.</doc>
            <type name="StateSet" c:type="AtspiStateSet*"/>
          </parameter>
          <parameter name="statematchtype" transfer-ownership="none">
            <doc xml:whitespace="preserve">An #AtspiCollectionMatchType specifying how to interpret</doc>
            <type name="CollectionMatchType"
                  c:type="AtspiCollectionMatchType"/>
          </parameter>
          <parameter name="attributes" transfer-ownership="none">
            <doc xml:whitespace="preserve">A #GHashTable specifying</doc>
            <type name="GLib.HashTable" c:type="GHashTable*">
              <type name="utf8"/>
              <type name="utf8"/>
            </type>
          </parameter>
          <parameter name="attributematchtype" transfer-ownership="none">
            <doc xml:whitespace="preserve">An #AtspiCollectionMatchType specifying how to</doc>
            <type name="CollectionMatchType"
                  c:type="AtspiCollectionMatchType"/>
          </parameter>
          <parameter name="roles" transfer-ownership="none">
            <doc xml:whitespace="preserve">A #GArray of roles to match, or NULL if</doc>
            <array name="GLib.Array" c:type="GArray*">
              <type name="Role"/>
            </array>
          </parameter>
          <parameter name="rolematchtype" transfer-ownership="none">
            <doc xml:whitespace="preserve">An #AtspiCollectionMatchType specifying how to</doc>
            <type name="CollectionMatchType"
                  c:type="AtspiCollectionMatchType"/>
          </parameter>
          <parameter name="interfaces" transfer-ownership="none">
            <doc xml:whitespace="preserve">An array of interfaces to match, or</doc>
            <array name="GLib.Array" c:type="GArray*">
              <type name="utf8"/>
            </array>
          </parameter>
          <parameter name="interfacematchtype" transfer-ownership="none">
            <doc xml:whitespace="preserve">An #AtspiCollectionMatchType specifying how to</doc>
            <type name="CollectionMatchType"
                  c:type="AtspiCollectionMatchType"/>
          </parameter>
          <parameter name="invert" transfer-ownership="none">
            <doc xml:whitespace="preserve">if #TRUE, the match rule should be denied (inverted); if #FALSE,</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </constructor>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="states">
        <type name="StateSet" c:type="AtspiStateSet*"/>
      </field>
      <field name="statematchtype">
        <type name="CollectionMatchType" c:type="AtspiCollectionMatchType"/>
      </field>
      <field name="attributes">
        <type name="GLib.HashTable" c:type="GHashTable*">
          <type name="gpointer" c:type="gpointer"/>
          <type name="gpointer" c:type="gpointer"/>
        </type>
      </field>
      <field name="attributematchtype">
        <type name="CollectionMatchType" c:type="AtspiCollectionMatchType"/>
      </field>
      <field name="interfaces">
        <array name="GLib.Array" c:type="GArray*">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
      <field name="interfacematchtype">
        <type name="CollectionMatchType" c:type="AtspiCollectionMatchType"/>
      </field>
      <field name="roles">
        <array zero-terminated="0" c:type="gint" fixed-size="4">
          <type name="gint" c:type="gint"/>
        </array>
      </field>
      <field name="rolematchtype">
        <type name="CollectionMatchType" c:type="AtspiCollectionMatchType"/>
      </field>
      <field name="invert">
        <type name="gboolean" c:type="gboolean"/>
      </field>
    </class>
    <record name="MatchRuleClass"
            c:type="AtspiMatchRuleClass"
            glib:is-gtype-struct-for="MatchRule">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <enumeration name="ModifierType" c:type="AtspiModifierType">
      <member name="shift" value="0" c:identifier="ATSPI_MODIFIER_SHIFT"/>
      <member name="shiftlock"
              value="1"
              c:identifier="ATSPI_MODIFIER_SHIFTLOCK"/>
      <member name="control" value="2" c:identifier="ATSPI_MODIFIER_CONTROL"/>
      <member name="alt" value="3" c:identifier="ATSPI_MODIFIER_ALT"/>
      <member name="meta" value="4" c:identifier="ATSPI_MODIFIER_META"/>
      <member name="meta2" value="5" c:identifier="ATSPI_MODIFIER_META2"/>
      <member name="meta3" value="6" c:identifier="ATSPI_MODIFIER_META3"/>
      <member name="numlock" value="14" c:identifier="ATSPI_MODIFIER_NUMLOCK"/>
    </enumeration>
    <class name="Object"
           c:symbol-prefix="object"
           c:type="AtspiObject"
           parent="GObject.Object"
           glib:type-name="AtspiObject"
           glib:get-type="atspi_object_get_type"
           glib:type-struct="ObjectClass">
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="app">
        <type name="Application" c:type="AtspiApplication*"/>
      </field>
      <field name="path">
        <type name="utf8" c:type="char*"/>
      </field>
    </class>
    <record name="ObjectClass"
            c:type="AtspiObjectClass"
            glib:is-gtype-struct-for="Object">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <record name="Point"
            c:type="AtspiPoint"
            glib:type-name="AtspiPoint"
            glib:get-type="atspi_point_get_type"
            c:symbol-prefix="point">
      <field name="x" writable="1">
        <type name="gint" c:type="gint"/>
      </field>
      <field name="y" writable="1">
        <type name="gint" c:type="gint"/>
      </field>
      <method name="copy" c:identifier="atspi_point_copy">
        <return-value transfer-ownership="full">
          <type name="Point" c:type="AtspiPoint*"/>
        </return-value>
      </method>
    </record>
    <constant name="RELATIONTYPE_COUNT"
              value="20"
              c:type="ATSPI_RELATIONTYPE_COUNT">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="ROLE_COUNT" value="91" c:type="ATSPI_ROLE_COUNT">
      <type name="gint" c:type="gint"/>
    </constant>
    <record name="Range"
            c:type="AtspiRange"
            glib:type-name="AtspiRange"
            glib:get-type="atspi_range_get_type"
            c:symbol-prefix="range">
      <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>
      <method name="copy" c:identifier="atspi_range_copy">
        <doc xml:whitespace="preserve">Gets a copy of an #AtspiRange object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">the #AtspiRange copy of an #AtspiRange object.</doc>
          <type name="Range" c:type="AtspiRange*"/>
        </return-value>
      </method>
    </record>
    <record name="Rect"
            c:type="AtspiRect"
            glib:type-name="AtspiRect"
            glib:get-type="atspi_rect_get_type"
            c:symbol-prefix="rect">
      <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>
      <method name="copy" c:identifier="atspi_rect_copy">
        <return-value transfer-ownership="full">
          <type name="Rect" c:type="AtspiRect*"/>
        </return-value>
      </method>
    </record>
    <record name="Reference" c:type="AtspiReference">
      <field name="name" writable="1">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="path" writable="1">
        <type name="utf8" c:type="char*"/>
      </field>
    </record>
    <class name="Relation"
           c:symbol-prefix="relation"
           c:type="AtspiRelation"
           parent="GObject.Object"
           glib:type-name="AtspiRelation"
           glib:get-type="atspi_relation_get_type"
           glib:type-struct="RelationClass">
      <method name="get_n_targets" c:identifier="atspi_relation_get_n_targets">
        <doc xml:whitespace="preserve">Gets the number of objects which this relationship has as its
target objects (the subject is the #AtspiAccessible from which this
#AtspiRelation originated).

originating #AtspiAccessible object has the #AtspiRelation
relationship with.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #gint indicating how many target objects which the</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </method>
      <method name="get_relation_type"
              c:identifier="atspi_relation_get_relation_type">
        <doc xml:whitespace="preserve">Gets the type of relationship represented by an #AtspiRelation.

encapsulated in this #AtspiRelation object.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an #AtspiRelationType indicating the type of relation</doc>
          <type name="RelationType" c:type="AtspiRelationType"/>
        </return-value>
      </method>
      <method name="get_target" c:identifier="atspi_relation_get_target">
        <doc xml:whitespace="preserve">Gets the @i-th target of a specified #AtspiRelation relationship.

with which the originating #AtspiAccessible has relationship
specified in the #AtspiRelation object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtspiAccessible which is the @i-th object</doc>
          <type name="Accessible" c:type="AtspiAccessible*"/>
        </return-value>
        <parameters>
          <parameter name="i" transfer-ownership="none">
            <doc xml:whitespace="preserve">a (zero-index) #gint indicating which (of possibly several) target is requested.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="relation_type">
        <type name="RelationType" c:type="AtspiRelationType"/>
      </field>
      <field name="targets">
        <array name="GLib.Array" c:type="GArray*">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </class>
    <record name="RelationClass"
            c:type="AtspiRelationClass"
            glib:is-gtype-struct-for="Relation">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <enumeration name="RelationType" c:type="AtspiRelationType">
      <doc xml:whitespace="preserve">#AtspiRelationType specifies a relationship between objects 
(possibly one-to-many
or many-to-one) outside of the normal parent/child hierarchical
relationship. It allows better semantic       identification of how objects
are associated with one another.       For instance the 
@ATSPI_RELATION_LABELLED_BY
relationship may be used to identify labelling information       that should
accompany the accessible name property when presenting an object's content or
identity       to the end user.  Similarly, 
@ATSPI_RELATION_CONTROLLER_FOR can be used
to further specify the context in which a valuator is useful, and/or the
other UI components which are directly effected by user interactions with
the valuator. Common examples include association of scrollbars with the
viewport or panel which they control.


Enumeration used to specify
the type of relation encapsulated in an #AtspiRelation object.</doc>
      <member name="null" value="0" c:identifier="ATSPI_RELATION_NULL"/>
      <member name="label_for"
              value="1"
              c:identifier="ATSPI_RELATION_LABEL_FOR"/>
      <member name="labelled_by"
              value="2"
              c:identifier="ATSPI_RELATION_LABELLED_BY"/>
      <member name="controller_for"
              value="3"
              c:identifier="ATSPI_RELATION_CONTROLLER_FOR"/>
      <member name="controlled_by"
              value="4"
              c:identifier="ATSPI_RELATION_CONTROLLED_BY"/>
      <member name="member_of"
              value="5"
              c:identifier="ATSPI_RELATION_MEMBER_OF"/>
      <member name="tooltip_for"
              value="6"
              c:identifier="ATSPI_RELATION_TOOLTIP_FOR"/>
      <member name="node_child_of"
              value="7"
              c:identifier="ATSPI_RELATION_NODE_CHILD_OF"/>
      <member name="node_parent_of"
              value="8"
              c:identifier="ATSPI_RELATION_NODE_PARENT_OF"/>
      <member name="extended"
              value="9"
              c:identifier="ATSPI_RELATION_EXTENDED"/>
      <member name="flows_to"
              value="10"
              c:identifier="ATSPI_RELATION_FLOWS_TO"/>
      <member name="flows_from"
              value="11"
              c:identifier="ATSPI_RELATION_FLOWS_FROM"/>
      <member name="subwindow_of"
              value="12"
              c:identifier="ATSPI_RELATION_SUBWINDOW_OF"/>
      <member name="embeds" value="13" c:identifier="ATSPI_RELATION_EMBEDS"/>
      <member name="embedded_by"
              value="14"
              c:identifier="ATSPI_RELATION_EMBEDDED_BY"/>
      <member name="popup_for"
              value="15"
              c:identifier="ATSPI_RELATION_POPUP_FOR"/>
      <member name="parent_window_of"
              value="16"
              c:identifier="ATSPI_RELATION_PARENT_WINDOW_OF"/>
      <member name="description_for"
              value="17"
              c:identifier="ATSPI_RELATION_DESCRIPTION_FOR"/>
      <member name="described_by"
              value="18"
              c:identifier="ATSPI_RELATION_DESCRIBED_BY"/>
      <member name="last_defined"
              value="19"
              c:identifier="ATSPI_RELATION_LAST_DEFINED"/>
    </enumeration>
    <enumeration name="Role" c:type="AtspiRole">
      <doc xml:whitespace="preserve">Enumeration used by interface #AtspiAccessible to specify the role
of an #AtspiAccessible object.</doc>
      <member name="invalid" value="0" c:identifier="ATSPI_ROLE_INVALID"/>
      <member name="accelerator_label"
              value="1"
              c:identifier="ATSPI_ROLE_ACCELERATOR_LABEL"/>
      <member name="alert" value="2" c:identifier="ATSPI_ROLE_ALERT"/>
      <member name="animation" value="3" c:identifier="ATSPI_ROLE_ANIMATION"/>
      <member name="arrow" value="4" c:identifier="ATSPI_ROLE_ARROW"/>
      <member name="calendar" value="5" c:identifier="ATSPI_ROLE_CALENDAR"/>
      <member name="canvas" value="6" c:identifier="ATSPI_ROLE_CANVAS"/>
      <member name="check_box" value="7" c:identifier="ATSPI_ROLE_CHECK_BOX"/>
      <member name="check_menu_item"
              value="8"
              c:identifier="ATSPI_ROLE_CHECK_MENU_ITEM"/>
      <member name="color_chooser"
              value="9"
              c:identifier="ATSPI_ROLE_COLOR_CHOOSER"/>
      <member name="column_header"
              value="10"
              c:identifier="ATSPI_ROLE_COLUMN_HEADER"/>
      <member name="combo_box" value="11" c:identifier="ATSPI_ROLE_COMBO_BOX"/>
      <member name="date_editor"
              value="12"
              c:identifier="ATSPI_ROLE_DATE_EDITOR"/>
      <member name="desktop_icon"
              value="13"
              c:identifier="ATSPI_ROLE_DESKTOP_ICON"/>
      <member name="desktop_frame"
              value="14"
              c:identifier="ATSPI_ROLE_DESKTOP_FRAME"/>
      <member name="dial" value="15" c:identifier="ATSPI_ROLE_DIAL"/>
      <member name="dialog" value="16" c:identifier="ATSPI_ROLE_DIALOG"/>
      <member name="directory_pane"
              value="17"
              c:identifier="ATSPI_ROLE_DIRECTORY_PANE"/>
      <member name="drawing_area"
              value="18"
              c:identifier="ATSPI_ROLE_DRAWING_AREA"/>
      <member name="file_chooser"
              value="19"
              c:identifier="ATSPI_ROLE_FILE_CHOOSER"/>
      <member name="filler" value="20" c:identifier="ATSPI_ROLE_FILLER"/>
      <member name="focus_traversable"
              value="21"
              c:identifier="ATSPI_ROLE_FOCUS_TRAVERSABLE"/>
      <member name="font_chooser"
              value="22"
              c:identifier="ATSPI_ROLE_FONT_CHOOSER"/>
      <member name="frame" value="23" c:identifier="ATSPI_ROLE_FRAME"/>
      <member name="glass_pane"
              value="24"
              c:identifier="ATSPI_ROLE_GLASS_PANE"/>
      <member name="html_container"
              value="25"
              c:identifier="ATSPI_ROLE_HTML_CONTAINER"/>
      <member name="icon" value="26" c:identifier="ATSPI_ROLE_ICON"/>
      <member name="image" value="27" c:identifier="ATSPI_ROLE_IMAGE"/>
      <member name="internal_frame"
              value="28"
              c:identifier="ATSPI_ROLE_INTERNAL_FRAME"/>
      <member name="label" value="29" c:identifier="ATSPI_ROLE_LABEL"/>
      <member name="layered_pane"
              value="30"
              c:identifier="ATSPI_ROLE_LAYERED_PANE"/>
      <member name="list" value="31" c:identifier="ATSPI_ROLE_LIST"/>
      <member name="list_item" value="32" c:identifier="ATSPI_ROLE_LIST_ITEM"/>
      <member name="menu" value="33" c:identifier="ATSPI_ROLE_MENU"/>
      <member name="menu_bar" value="34" c:identifier="ATSPI_ROLE_MENU_BAR"/>
      <member name="menu_item" value="35" c:identifier="ATSPI_ROLE_MENU_ITEM"/>
      <member name="option_pane"
              value="36"
              c:identifier="ATSPI_ROLE_OPTION_PANE"/>
      <member name="page_tab" value="37" c:identifier="ATSPI_ROLE_PAGE_TAB"/>
      <member name="page_tab_list"
              value="38"
              c:identifier="ATSPI_ROLE_PAGE_TAB_LIST"/>
      <member name="panel" value="39" c:identifier="ATSPI_ROLE_PANEL"/>
      <member name="password_text"
              value="40"
              c:identifier="ATSPI_ROLE_PASSWORD_TEXT"/>
      <member name="popup_menu"
              value="41"
              c:identifier="ATSPI_ROLE_POPUP_MENU"/>
      <member name="progress_bar"
              value="42"
              c:identifier="ATSPI_ROLE_PROGRESS_BAR"/>
      <member name="push_button"
              value="43"
              c:identifier="ATSPI_ROLE_PUSH_BUTTON"/>
      <member name="radio_button"
              value="44"
              c:identifier="ATSPI_ROLE_RADIO_BUTTON"/>
      <member name="radio_menu_item"
              value="45"
              c:identifier="ATSPI_ROLE_RADIO_MENU_ITEM"/>
      <member name="root_pane" value="46" c:identifier="ATSPI_ROLE_ROOT_PANE"/>
      <member name="row_header"
              value="47"
              c:identifier="ATSPI_ROLE_ROW_HEADER"/>
      <member name="scroll_bar"
              value="48"
              c:identifier="ATSPI_ROLE_SCROLL_BAR"/>
      <member name="scroll_pane"
              value="49"
              c:identifier="ATSPI_ROLE_SCROLL_PANE"/>
      <member name="separator" value="50" c:identifier="ATSPI_ROLE_SEPARATOR"/>
      <member name="slider" value="51" c:identifier="ATSPI_ROLE_SLIDER"/>
      <member name="spin_button"
              value="52"
              c:identifier="ATSPI_ROLE_SPIN_BUTTON"/>
      <member name="split_pane"
              value="53"
              c:identifier="ATSPI_ROLE_SPLIT_PANE"/>
      <member name="status_bar"
              value="54"
              c:identifier="ATSPI_ROLE_STATUS_BAR"/>
      <member name="table" value="55" c:identifier="ATSPI_ROLE_TABLE"/>
      <member name="table_cell"
              value="56"
              c:identifier="ATSPI_ROLE_TABLE_CELL"/>
      <member name="table_column_header"
              value="57"
              c:identifier="ATSPI_ROLE_TABLE_COLUMN_HEADER"/>
      <member name="table_row_header"
              value="58"
              c:identifier="ATSPI_ROLE_TABLE_ROW_HEADER"/>
      <member name="tearoff_menu_item"
              value="59"
              c:identifier="ATSPI_ROLE_TEAROFF_MENU_ITEM"/>
      <member name="terminal" value="60" c:identifier="ATSPI_ROLE_TERMINAL"/>
      <member name="text" value="61" c:identifier="ATSPI_ROLE_TEXT"/>
      <member name="toggle_button"
              value="62"
              c:identifier="ATSPI_ROLE_TOGGLE_BUTTON"/>
      <member name="tool_bar" value="63" c:identifier="ATSPI_ROLE_TOOL_BAR"/>
      <member name="tool_tip" value="64" c:identifier="ATSPI_ROLE_TOOL_TIP"/>
      <member name="tree" value="65" c:identifier="ATSPI_ROLE_TREE"/>
      <member name="tree_table"
              value="66"
              c:identifier="ATSPI_ROLE_TREE_TABLE"/>
      <member name="unknown" value="67" c:identifier="ATSPI_ROLE_UNKNOWN"/>
      <member name="viewport" value="68" c:identifier="ATSPI_ROLE_VIEWPORT"/>
      <member name="window" value="69" c:identifier="ATSPI_ROLE_WINDOW"/>
      <member name="extended" value="70" c:identifier="ATSPI_ROLE_EXTENDED"/>
      <member name="header" value="71" c:identifier="ATSPI_ROLE_HEADER"/>
      <member name="footer" value="72" c:identifier="ATSPI_ROLE_FOOTER"/>
      <member name="paragraph" value="73" c:identifier="ATSPI_ROLE_PARAGRAPH"/>
      <member name="ruler" value="74" c:identifier="ATSPI_ROLE_RULER"/>
      <member name="application"
              value="75"
              c:identifier="ATSPI_ROLE_APPLICATION"/>
      <member name="autocomplete"
              value="76"
              c:identifier="ATSPI_ROLE_AUTOCOMPLETE"/>
      <member name="editbar" value="77" c:identifier="ATSPI_ROLE_EDITBAR"/>
      <member name="embedded" value="78" c:identifier="ATSPI_ROLE_EMBEDDED"/>
      <member name="entry" value="79" c:identifier="ATSPI_ROLE_ENTRY"/>
      <member name="chart" value="80" c:identifier="ATSPI_ROLE_CHART"/>
      <member name="caption" value="81" c:identifier="ATSPI_ROLE_CAPTION"/>
      <member name="document_frame"
              value="82"
              c:identifier="ATSPI_ROLE_DOCUMENT_FRAME"/>
      <member name="heading" value="83" c:identifier="ATSPI_ROLE_HEADING"/>
      <member name="page" value="84" c:identifier="ATSPI_ROLE_PAGE"/>
      <member name="section" value="85" c:identifier="ATSPI_ROLE_SECTION"/>
      <member name="redundant_object"
              value="86"
              c:identifier="ATSPI_ROLE_REDUNDANT_OBJECT"/>
      <member name="form" value="87" c:identifier="ATSPI_ROLE_FORM"/>
      <member name="link" value="88" c:identifier="ATSPI_ROLE_LINK"/>
      <member name="input_method_window"
              value="89"
              c:identifier="ATSPI_ROLE_INPUT_METHOD_WINDOW"/>
      <member name="table_row" value="90" c:identifier="ATSPI_ROLE_TABLE_ROW"/>
      <member name="tree_item" value="91" c:identifier="ATSPI_ROLE_TREE_ITEM"/>
      <member name="document_spreadsheet"
              value="92"
              c:identifier="ATSPI_ROLE_DOCUMENT_SPREADSHEET"/>
      <member name="document_presentation"
              value="93"
              c:identifier="ATSPI_ROLE_DOCUMENT_PRESENTATION"/>
      <member name="document_text"
              value="94"
              c:identifier="ATSPI_ROLE_DOCUMENT_TEXT"/>
      <member name="document_web"
              value="95"
              c:identifier="ATSPI_ROLE_DOCUMENT_WEB"/>
      <member name="document_email"
              value="96"
              c:identifier="ATSPI_ROLE_DOCUMENT_EMAIL"/>
      <member name="comment" value="97" c:identifier="ATSPI_ROLE_COMMENT"/>
      <member name="list_box" value="98" c:identifier="ATSPI_ROLE_LIST_BOX"/>
      <member name="grouping" value="99" c:identifier="ATSPI_ROLE_GROUPING"/>
      <member name="image_map"
              value="100"
              c:identifier="ATSPI_ROLE_IMAGE_MAP"/>
      <member name="notification"
              value="101"
              c:identifier="ATSPI_ROLE_NOTIFICATION"/>
      <member name="info_bar" value="102" c:identifier="ATSPI_ROLE_INFO_BAR"/>
      <member name="last_defined"
              value="103"
              c:identifier="ATSPI_ROLE_LAST_DEFINED"/>
    </enumeration>
    <constant name="SORTORDER_COUNT" value="8" c:type="ATSPI_SORTORDER_COUNT">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="STATETYPE_COUNT" value="42" c:type="ATSPI_STATETYPE_COUNT">
      <type name="gint" c:type="gint"/>
    </constant>
    <interface name="Selection"
               c:symbol-prefix="selection"
               c:type="AtspiSelection"
               glib:type-name="AtspiSelection"
               glib:get-type="atspi_selection_get_type">
      <method name="clear_selection"
              c:identifier="atspi_selection_clear_selection"
              throws="1">
        <doc xml:whitespace="preserve">Clears the current selection, removing all selected children from the
specified #AtspiSelection implementor's selection list.</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="deselect_child"
              c:identifier="atspi_selection_deselect_child"
              throws="1">
        <doc xml:whitespace="preserve">Deselects a specific child of an #AtspiSelection.
Note that @child_index is the index of the child
in the parent container.

See #atspi_selection_deselect_selected_child</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if the child was successfully deselected, #FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="child_index" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint indicating which of the children of the #AtspiAccessible is to be de-selected.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="deselect_selected_child"
              c:identifier="atspi_selection_deselect_selected_child"
              throws="1">
        <doc xml:whitespace="preserve">Removes a child from the selected children list of an #AtspiSelection.
Note that @child_index is the index in the selected-children list,
not the index in the parent container.  @selectedChildIndex in this
method, and @child_index in #atspi_selection_select_child
are asymmetric.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if the child was successfully deselected, #FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="selected_child_index" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint indicating which of the selected children of the #Accessible is to be selected.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_n_selected_children"
              c:identifier="atspi_selection_get_n_selected_children"
              throws="1">
        <doc xml:whitespace="preserve">Gets the number of children of an #AtspiSelection implementor which are
currently selected.

of the #AtspiSelection implementor which are currently selected.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #gint indicating the number of #Accessible children</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </method>
      <method name="get_selected_child"
              c:identifier="atspi_selection_get_selected_child"
              throws="1">
        <doc xml:whitespace="preserve">Gets the i-th selected #AtspiAccessible child of an #AtspiSelection.
Note that @selected_child_index refers to the index in the list 
of 'selected'
children and generally differs from that used in
#atspi_accessible_get_child_at_index or returned by
#atspi_accessible_get_index_in_parent.
@selected_child_index must lie between 0
and #atspi_selection_get_n_selected_children - 1, inclusive.

object, specified by @selected_child_index.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to a selected #AtspiAccessible child</doc>
          <type name="Accessible" c:type="AtspiAccessible*"/>
        </return-value>
        <parameters>
          <parameter name="selected_child_index" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint indicating which of the selected children is specified.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_child_selected"
              c:identifier="atspi_selection_is_child_selected"
              throws="1">
        <doc xml:whitespace="preserve">Determines whether a particular child of an #AtspiSelection implementor
is currently selected.  Note that @child_index is the index into the
standard #AtspiAccessible container's list of children.

#FALSE otherwise.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if the specified child is currently selected,</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="child_index" transfer-ownership="none">
            <doc xml:whitespace="preserve">an index into the #AtspiSelection's list of children.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="select_all"
              c:identifier="atspi_selection_select_all"
              throws="1">
        <doc xml:whitespace="preserve">Attempts to select all of the children of an #AtspiSelection implementor.
Not all #AtspiSelection implementors support this operation.</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="select_child"
              c:identifier="atspi_selection_select_child"
              throws="1">
        <doc xml:whitespace="preserve">Adds a child to the selected children list of an #AtspiSelection.
For #AtspiSelection implementors that only allow
single selections, this may replace the (single) current
selection.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if the child was successfully selected, #FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="child_index" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint indicating which child of the #Accessible is to be selected.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
    </interface>
    <class name="StateSet"
           c:symbol-prefix="state_set"
           c:type="AtspiStateSet"
           parent="GObject.Object"
           glib:type-name="AtspiStateSet"
           glib:get-type="atspi_state_set_get_type"
           glib:type-struct="StateSetClass">
      <constructor name="new" c:identifier="atspi_state_set_new">
        <doc xml:whitespace="preserve">method initializes the state set.

Generates an #AtspiStateSet with the given @states.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A new #AtspiStateSet with the given states.</doc>
          <type name="StateSet" c:type="AtspiStateSet*"/>
        </return-value>
        <parameters>
          <parameter name="states" transfer-ownership="none">
            <doc xml:whitespace="preserve">An array of states with which the</doc>
            <array name="GLib.Array" c:type="GArray*">
              <type name="StateType"/>
            </array>
          </parameter>
        </parameters>
      </constructor>
      <method name="add" c:identifier="atspi_state_set_add">
        <doc xml:whitespace="preserve">Adds a particular #AtspiState to an #AtspiStateSet (i.e. sets the
given state to #TRUE in the stateset).</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 #AtspiStateType to be added to the specified #AtspiStateSet.</doc>
            <type name="StateType" c:type="AtspiStateType"/>
          </parameter>
        </parameters>
      </method>
      <method name="compare" c:identifier="atspi_state_set_compare">
        <doc xml:whitespace="preserve">Determines the differences between two instances of #AtspiStateSet.

@see #atspi_state_set_equals.

contained on one of the two sets but not the other.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtspiStateSet object containing all states</doc>
          <type name="StateSet" c:type="AtspiStateSet*"/>
        </return-value>
        <parameters>
          <parameter name="set2" transfer-ownership="none">
            <doc xml:whitespace="preserve">a pointer to the second #AtspiStateSet object on which to operate.</doc>
            <type name="StateSet" c:type="AtspiStateSet*"/>
          </parameter>
        </parameters>
      </method>
      <method name="contains" c:identifier="atspi_state_set_contains">
        <doc xml:whitespace="preserve">will be queried.

Determines whether a given #AtspiStateSet includes a given state; that is,
whether @state is true for the @set in question.

otherwise #FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if @state is true/included in the given #AtspiStateSet,</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="state" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtspiStateType for which the specified #AtspiStateSet</doc>
            <type name="StateType" c:type="AtspiStateType"/>
          </parameter>
        </parameters>
      </method>
      <method name="equals" c:identifier="atspi_state_set_equals">
        <doc xml:whitespace="preserve">Determines whether two instances of #AtspiStateSet are equivalent (i.e.
consist of the same #AtspiStates).  Useful for checking multiple
state variables at once.

@see #atspi_state_set_compare.

otherwise #FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if the two #AtspiStateSets are equivalent,</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="set2" transfer-ownership="none">
            <doc xml:whitespace="preserve">a pointer to the second #AtspiStateSet object on which to operate.</doc>
            <type name="StateSet" c:type="AtspiStateSet*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_states" c:identifier="atspi_state_set_get_states">
        <doc xml:whitespace="preserve">Returns the states in an #AtspiStateSet as an array.

types representing the current state.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A #GArray of state</doc>
          <array name="GLib.Array" c:type="GArray*">
            <type name="StateType"/>
          </array>
        </return-value>
      </method>
      <method name="is_empty" c:identifier="atspi_state_set_is_empty">
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if the state set contains no states; #FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="remove" c:identifier="atspi_state_set_remove">
        <doc xml:whitespace="preserve">Removes a particular #AtspiState to an #AtspiStateSet (i.e. sets the
given state to #FALSE in the stateset.)</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 #AtspiStateType to remove from the specified @set.</doc>
            <type name="StateType" c:type="AtspiStateType"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_by_name" c:identifier="atspi_state_set_set_by_name">
        <doc xml:whitespace="preserve">should be disabled. 

Enables/disables a state in an #AtspiStateSet according to its @name.</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 string corresponding to a state name.</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="enabled" transfer-ownership="none">
            <doc xml:whitespace="preserve">if #TRUE, @name should be enabled in the @set in question; otherwise, it</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="accessible">
        <type name="gpointer" c:type="gpointer*"/>
      </field>
      <field name="states">
        <type name="gint64" c:type="gint64"/>
      </field>
    </class>
    <record name="StateSetClass"
            c:type="AtspiStateSetClass"
            glib:is-gtype-struct-for="StateSet">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <enumeration name="StateType" c:type="AtspiStateType">
      <doc xml:whitespace="preserve">Enumeration used by various interfaces indicating every possible state 
an #AtspiAccesible object can assume.</doc>
      <member name="invalid" value="0" c:identifier="ATSPI_STATE_INVALID"/>
      <member name="active" value="1" c:identifier="ATSPI_STATE_ACTIVE"/>
      <member name="armed" value="2" c:identifier="ATSPI_STATE_ARMED"/>
      <member name="busy" value="3" c:identifier="ATSPI_STATE_BUSY"/>
      <member name="checked" value="4" c:identifier="ATSPI_STATE_CHECKED"/>
      <member name="collapsed" value="5" c:identifier="ATSPI_STATE_COLLAPSED"/>
      <member name="defunct" value="6" c:identifier="ATSPI_STATE_DEFUNCT"/>
      <member name="editable" value="7" c:identifier="ATSPI_STATE_EDITABLE"/>
      <member name="enabled" value="8" c:identifier="ATSPI_STATE_ENABLED"/>
      <member name="expandable"
              value="9"
              c:identifier="ATSPI_STATE_EXPANDABLE"/>
      <member name="expanded" value="10" c:identifier="ATSPI_STATE_EXPANDED"/>
      <member name="focusable"
              value="11"
              c:identifier="ATSPI_STATE_FOCUSABLE"/>
      <member name="focused" value="12" c:identifier="ATSPI_STATE_FOCUSED"/>
      <member name="has_tooltip"
              value="13"
              c:identifier="ATSPI_STATE_HAS_TOOLTIP"/>
      <member name="horizontal"
              value="14"
              c:identifier="ATSPI_STATE_HORIZONTAL"/>
      <member name="iconified"
              value="15"
              c:identifier="ATSPI_STATE_ICONIFIED"/>
      <member name="modal" value="16" c:identifier="ATSPI_STATE_MODAL"/>
      <member name="multi_line"
              value="17"
              c:identifier="ATSPI_STATE_MULTI_LINE"/>
      <member name="multiselectable"
              value="18"
              c:identifier="ATSPI_STATE_MULTISELECTABLE"/>
      <member name="opaque" value="19" c:identifier="ATSPI_STATE_OPAQUE"/>
      <member name="pressed" value="20" c:identifier="ATSPI_STATE_PRESSED"/>
      <member name="resizable"
              value="21"
              c:identifier="ATSPI_STATE_RESIZABLE"/>
      <member name="selectable"
              value="22"
              c:identifier="ATSPI_STATE_SELECTABLE"/>
      <member name="selected" value="23" c:identifier="ATSPI_STATE_SELECTED"/>
      <member name="sensitive"
              value="24"
              c:identifier="ATSPI_STATE_SENSITIVE"/>
      <member name="showing" value="25" c:identifier="ATSPI_STATE_SHOWING"/>
      <member name="single_line"
              value="26"
              c:identifier="ATSPI_STATE_SINGLE_LINE"/>
      <member name="stale" value="27" c:identifier="ATSPI_STATE_STALE"/>
      <member name="transient"
              value="28"
              c:identifier="ATSPI_STATE_TRANSIENT"/>
      <member name="vertical" value="29" c:identifier="ATSPI_STATE_VERTICAL"/>
      <member name="visible" value="30" c:identifier="ATSPI_STATE_VISIBLE"/>
      <member name="manages_descendants"
              value="31"
              c:identifier="ATSPI_STATE_MANAGES_DESCENDANTS"/>
      <member name="indeterminate"
              value="32"
              c:identifier="ATSPI_STATE_INDETERMINATE"/>
      <member name="required" value="33" c:identifier="ATSPI_STATE_REQUIRED"/>
      <member name="truncated"
              value="34"
              c:identifier="ATSPI_STATE_TRUNCATED"/>
      <member name="animated" value="35" c:identifier="ATSPI_STATE_ANIMATED"/>
      <member name="invalid_entry"
              value="36"
              c:identifier="ATSPI_STATE_INVALID_ENTRY"/>
      <member name="supports_autocompletion"
              value="37"
              c:identifier="ATSPI_STATE_SUPPORTS_AUTOCOMPLETION"/>
      <member name="selectable_text"
              value="38"
              c:identifier="ATSPI_STATE_SELECTABLE_TEXT"/>
      <member name="is_default"
              value="39"
              c:identifier="ATSPI_STATE_IS_DEFAULT"/>
      <member name="visited" value="40" c:identifier="ATSPI_STATE_VISITED"/>
      <member name="last_defined"
              value="41"
              c:identifier="ATSPI_STATE_LAST_DEFINED"/>
    </enumeration>
    <constant name="TEXT_BOUNDARY_TYPE_COUNT"
              value="7"
              c:type="ATSPI_TEXT_BOUNDARY_TYPE_COUNT">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="TEXT_CLIP_TYPE_COUNT"
              value="4"
              c:type="ATSPI_TEXT_CLIP_TYPE_COUNT">
      <type name="gint" c:type="gint"/>
    </constant>
    <interface name="Table"
               c:symbol-prefix="table"
               c:type="AtspiTable"
               glib:type-name="AtspiTable"
               glib:get-type="atspi_table_get_type">
      <method name="add_column_selection"
              c:identifier="atspi_table_add_column_selection"
              throws="1">
        <doc xml:whitespace="preserve">Selects the specified column, adding it to the current column selection.
Not all tables support column selection.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if the specified column was successfully selected, #FALSE if not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="column" transfer-ownership="none">
            <doc xml:whitespace="preserve">the zero-indexed column number of the column being selected.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_row_selection"
              c:identifier="atspi_table_add_row_selection"
              throws="1">
        <doc xml:whitespace="preserve">Selects the specified row, adding it to the current row selection.
Not all tables support row selection.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if the specified row was successfully selected, #FALSE if not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="row" transfer-ownership="none">
            <doc xml:whitespace="preserve">the zero-indexed row number of the row being selected.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_accessible_at"
              c:identifier="atspi_table_get_accessible_at"
              throws="1">
        <doc xml:whitespace="preserve">Gets the table cell at the specified row and column indices.
To get the accessible object at a particular (x, y) screen 
coordinate, use #atspi_component_get_accessible_at_point.

specified table cell.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtspiAccessible object representing the</doc>
          <type name="Accessible" c:type="AtspiAccessible*"/>
        </return-value>
        <parameters>
          <parameter name="row" transfer-ownership="none">
            <doc xml:whitespace="preserve">the specified table row, zero-indexed.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:whitespace="preserve">the specified table column, zero-indexed.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_caption"
              c:identifier="atspi_table_get_caption"
              throws="1">
        <doc xml:whitespace="preserve">Gets an accessible representation of the caption for an #AtspiTable.

the table's caption.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtspiAccessible object that serves as</doc>
          <type name="Accessible" c:type="AtspiAccessible*"/>
        </return-value>
      </method>
      <method name="get_column_at_index"
              c:identifier="atspi_table_get_column_at_index"
              throws="1">
        <doc xml:whitespace="preserve">Gets the table column index occupied by the child at a particular 1-D
child index.

@see #atspi_table_get_index_at, #atspi_table_get_row_at_index

table, at the specified 1-D (zero-offset) @index.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #gint indicating the first column spanned by the child of a</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="index" transfer-ownership="none">
            <doc xml:whitespace="preserve">the specified child index, zero-indexed.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_column_description"
              c:identifier="atspi_table_get_column_description"
              throws="1">
        <doc xml:whitespace="preserve">Gets a text description of a particular table column.  This differs from
#atspi_table_get_column_header, which returns an #Accessible.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a UTF-8 string describing the specified table column, if available.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="column" transfer-ownership="none">
            <doc xml:whitespace="preserve">the specified table column, zero-indexed.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_column_extent_at"
              c:identifier="atspi_table_get_column_extent_at"
              throws="1">
        <doc xml:whitespace="preserve">Gets the number of columns spanned by the table cell at the specific
row and column (some tables can have cells which span multiple
rows and/or columns).</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #gint indicating the number of columns spanned by the specified cell.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="row" transfer-ownership="none">
            <doc xml:whitespace="preserve">the specified table row, zero-indexed.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:whitespace="preserve">the specified table column, zero-indexed.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_column_header"
              c:identifier="atspi_table_get_column_header"
              throws="1">
        <doc xml:whitespace="preserve">Gets the header associated with a table column, if available.
This differs from #atspi_table_get_column_description, which
returns a string.

specified table column, if available.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtspiAccessible representation of the</doc>
          <type name="Accessible" c:type="AtspiAccessible*"/>
        </return-value>
        <parameters>
          <parameter name="column" transfer-ownership="none">
            <doc xml:whitespace="preserve">the specified table column, zero-indexed.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_index_at"
              c:identifier="atspi_table_get_index_at"
              throws="1">
        <doc xml:whitespace="preserve">Gets the 1-D child index corresponding to the specified 2-D row and
column indices. To get the accessible object at a particular (x, y) screen 
coordinate, use #atspi_component_get_accessible_at_point.

@see #atspi_table_get_row_at_index, #atspi_table_get_column_at_index

table, in a form usable by #atspi_get_child_at_index.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #gint which serves as the index of a specified cell in the</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="row" transfer-ownership="none">
            <doc xml:whitespace="preserve">the specified table row, zero-indexed.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:whitespace="preserve">the specified table column, zero-indexed.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_n_columns"
              c:identifier="atspi_table_get_n_columns"
              throws="1">
        <doc xml:whitespace="preserve">Gets the number of columns in an #AtspiTable,
exclusive of any columns that are programmatically hidden, but inclusive
of columns that may be outside of the current scrolling window or viewport.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #gint indicating the number of columns in the table.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </method>
      <method name="get_n_rows"
              c:identifier="atspi_table_get_n_rows"
              throws="1">
        <doc xml:whitespace="preserve">Gets the number of rows in an #AtspiTable,
exclusive of any rows that are programmatically hidden, but inclusive
of rows that may be outside of the current scrolling window or viewport.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #gint indicating the number of rows in the table.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </method>
      <method name="get_n_selected_columns"
              c:identifier="atspi_table_get_n_selected_columns"
              throws="1">
        <doc xml:whitespace="preserve">Queries a table to find out how many columns are currently selected. 
Not all tables support column selection.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #gint indicating the number of columns currently selected.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </method>
      <method name="get_n_selected_rows"
              c:identifier="atspi_table_get_n_selected_rows"
              throws="1">
        <doc xml:whitespace="preserve">Query a table to find out how many rows are currently selected. 
Not all tables support row selection.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #gint indicating the number of rows currently selected.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </method>
      <method name="get_row_at_index"
              c:identifier="atspi_table_get_row_at_index"
              throws="1">
        <doc xml:whitespace="preserve">Gets the table row index occupied by the child at a particular 1-D 
child index.

@see #atspi_table_get_index_at, #atspi_table_get_column_at_index

table, at the specified 1-D (zero-offset) @index.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #gint indicating the first row spanned by the child of a</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="index" transfer-ownership="none">
            <doc xml:whitespace="preserve">the specified child index, zero-indexed.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_row_column_extents_at_index"
              c:identifier="atspi_table_get_row_column_extents_at_index"
              throws="1">
        <doc xml:whitespace="preserve">Given a child index, determines the row and column indices and 
extents, and whether the cell is currently selected.  If
the child at index is not a cell (for instance, if it is 
a summary, caption, etc.), #FALSE is returned.

Example:
If the #AtspiTable child at index '6' extends across columns 5 and 6 of
row 2 of an #AtspiTable instance, and is currently selected, then

retval = atspi_table_get_row_column_extents_at_index (table, 6,
row, col, 
row_extents,
col_extents,
is_selected);

will return #TRUE, and after the call
row, col, row_extents, col_extents,
and is_selected will contain 2, 5, 1, 2, and 
#TRUE, respectively.

cell, #FALSE if the index does not correspond to a cell.  If 
#FALSE is returned, the values of the out parameters are 
undefined.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if the index is associated with a valid table</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="index" transfer-ownership="none">
            <doc xml:whitespace="preserve">the index of the #AtspiTable child whose row/column extents are requested.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="row"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">back-filled with the first table row associated with the cell with child index.</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="col"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">back-filled with the first table column associated with the cell with child index.</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="row_extents"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">back-filled with the number of table rows across which child i extends.</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="col_extents"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">back-filled with the number of table columns across which child i extends.</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="is_selected"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">a boolean which is back-filled with #TRUE if the child at index i corresponds to a selected table cell, #FALSE otherwise.</doc>
            <type name="gboolean" c:type="gboolean*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_row_description"
              c:identifier="atspi_table_get_row_description"
              throws="1">
        <doc xml:whitespace="preserve">Gets a text description of a particular table row.  This differs from
#atspi_table_get_row_header, which returns an #AtspiAccessible.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a UTF-8 string describing the specified table row, if available.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="row" transfer-ownership="none">
            <doc xml:whitespace="preserve">the specified table row, zero-indexed.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_row_extent_at"
              c:identifier="atspi_table_get_row_extent_at"
              throws="1">
        <doc xml:whitespace="preserve">Gets the number of rows spanned by the table cell at the specific row
and column. (some tables can have cells which span multiple rows
and/or columns).</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #gint indicating the number of rows spanned by the specified cell.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="row" transfer-ownership="none">
            <doc xml:whitespace="preserve">the specified table row, zero-indexed.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:whitespace="preserve">the specified table column, zero-indexed.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_row_header"
              c:identifier="atspi_table_get_row_header"
              throws="1">
        <doc xml:whitespace="preserve">Gets the header associated with a table row, if available. This differs from
#atspi_table_get_row_description, which returns a string.

table row, if available.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtspiAccessible representation of the specified</doc>
          <type name="Accessible" c:type="AtspiAccessible*"/>
        </return-value>
        <parameters>
          <parameter name="row" transfer-ownership="none">
            <doc xml:whitespace="preserve">the specified table row, zero-indexed.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_selected_columns"
              c:identifier="atspi_table_get_selected_columns"
              throws="1">
        <doc xml:whitespace="preserve">Queries a table for a list of indices of columns which are currently
selected.

specifying which columns are currently selected.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an array of #gint values,</doc>
          <array name="GLib.Array" c:type="GArray*">
            <type name="gint"/>
          </array>
        </return-value>
      </method>
      <method name="get_selected_rows"
              c:identifier="atspi_table_get_selected_rows"
              throws="1">
        <doc xml:whitespace="preserve">Queries a table for a list of indices of rows which are currently selected.

specifying which rows are currently selected.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an array of #gint values,</doc>
          <array name="GLib.Array" c:type="GArray*">
            <type name="gint"/>
          </array>
        </return-value>
      </method>
      <method name="get_summary"
              c:identifier="atspi_table_get_summary"
              throws="1">
        <doc xml:whitespace="preserve">Gets an accessible object which summarizes the contents of an #AtspiTable.

table's summary (often a reduced #AtspiTable).</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtspiAccessible object that serves as the</doc>
          <type name="Accessible" c:type="AtspiAccessible*"/>
        </return-value>
      </method>
      <method name="is_column_selected"
              c:identifier="atspi_table_is_column_selected"
              throws="1">
        <doc xml:whitespace="preserve">Determines whether specified table column is selected.
Not all tables support column selection.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if the specified column is currently selected, #FALSE if not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="column" transfer-ownership="none">
            <doc xml:whitespace="preserve">the zero-indexed column number of the column being queried.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_row_selected"
              c:identifier="atspi_table_is_row_selected"
              throws="1">
        <doc xml:whitespace="preserve">Determines whether a table row is selected.  Not all tables support 
row selection.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if the specified row is currently selected, #FALSE if not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="row" transfer-ownership="none">
            <doc xml:whitespace="preserve">the zero-indexed row number of the row being queried.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_selected"
              c:identifier="atspi_table_is_selected"
              throws="1">
        <doc xml:whitespace="preserve">Determines whether the cell at a specific row and column is selected.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if the specified cell is currently selected, #FALSE if not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="row" transfer-ownership="none">
            <doc xml:whitespace="preserve">the zero-indexed row of the cell being queried.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:whitespace="preserve">the zero-indexed column of the cell being queried.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_column_selection"
              c:identifier="atspi_table_remove_column_selection"
              throws="1">
        <doc xml:whitespace="preserve">De-selects the specified column, removing it from the current column
selection.
Not all tables support column selection.

#FALSE if not.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if the specified column was successfully de-selected,</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="column" transfer-ownership="none">
            <doc xml:whitespace="preserve">the zero-indexed column number of the column being de-selected.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_row_selection"
              c:identifier="atspi_table_remove_row_selection"
              throws="1">
        <doc xml:whitespace="preserve">De-selects the specified row, removing it from the current row selection.
Not all tables support row selection.

#FALSE if not.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if the specified row was successfully de-selected,</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="row" transfer-ownership="none">
            <doc xml:whitespace="preserve">the zero-indexed number of the row being de-selected.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
    </interface>
    <interface name="Text"
               c:symbol-prefix="text"
               c:type="AtspiText"
               glib:type-name="AtspiText"
               glib:get-type="atspi_text_get_type">
      <method name="add_selection"
              c:identifier="atspi_text_add_selection"
              throws="1">
        <doc xml:whitespace="preserve">Selects some text (adds a text selection) in an #AtspiText object.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if successful, #FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="start_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">the starting offset of the desired new selection.</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 new selection.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_attribute_run"
              c:identifier="atspi_text_get_attribute_run"
              throws="1">
        <doc xml:whitespace="preserve">Gets a set of attributes applied to a range of text from an #AtspiText object, optionally
including its 'default' attributes.

defined at the indicated offset, optionally including the 'default' ones.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a #GHashTable with attributes</doc>
          <type name="GLib.HashTable" c:type="GHashTable*">
            <type name="utf8"/>
            <type name="utf8"/>
          </type>
        </return-value>
        <parameters>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint indicating the offset from which the attribute search is based.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="include_defaults" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #bool that, when set as #FALSE, indicates the call should only return those attributes which are explicitly set on the current attribute run, omitting any attributes which are inherited from the default values.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="start_offset"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">a #gint pointer indicating the start of the desired text 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">a #gint pointer indicating the first character past the desired range.</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_attribute_value"
              c:identifier="atspi_text_get_attribute_value"
              throws="1">
        <doc xml:whitespace="preserve">Gets the value of a named attribute at a given offset.

not present.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">the value of a given attribute at the given offset, or NULL if</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">The character offset at which to query the attribute.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="attribute_name" transfer-ownership="none">
            <doc xml:whitespace="preserve">The attribute to query.</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_attributes"
              c:identifier="atspi_text_get_attributes"
              throws="1">
        <doc xml:whitespace="preserve">Gets the attributes applied to a range of text from an #AtspiText
object. The text attributes correspond to CSS attributes
where possible.
&lt;em&gt;DEPRECATED&lt;/em&gt;

describing the attributes at the given character offset.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a #GHashTable</doc>
          <type name="GLib.HashTable" c:type="GHashTable*">
            <type name="utf8"/>
            <type name="utf8"/>
          </type>
        </return-value>
        <parameters>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint indicating the offset from which the attribute search is based.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="start_offset"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">a #gint pointer indicating the start of the desired text 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">a #gint pointer indicating the first character past the desired range.</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_bounded_ranges"
              c:identifier="atspi_text_get_bounded_ranges"
              throws="1">
        <doc xml:whitespace="preserve">Gets the ranges of text from an #AtspiText object which lie within the
bounds defined by (@x, @y) and (@x+@width, @y+@height).

pointers to #AtspiTextRange structs detailing the bounded text.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a null-terminated list of</doc>
          <array name="GLib.Array" c:type="GArray*">
            <type name="TextRange"/>
          </array>
        </return-value>
        <parameters>
          <parameter name="x" transfer-ownership="none">
            <doc xml:whitespace="preserve">the 'starting' x coordinate of the bounding box.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:whitespace="preserve">the 'starting' y coordinate of the bounding box.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:whitespace="preserve">the x extent of the bounding box.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:whitespace="preserve">the y extent of the bounding box.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AccessibleCoordType indicating the coordinate system to use for the returned values.</doc>
            <type name="CoordType" c:type="AtspiCoordType"/>
          </parameter>
          <parameter name="clipTypeX" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtspiTextClipType indicating how to treat characters that intersect the bounding box's x extents.</doc>
            <type name="TextClipType" c:type="AtspiTextClipType"/>
          </parameter>
          <parameter name="clipTypeY" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtspiTextClipType indicating how to treat characters that intersect the bounding box's y extents.</doc>
            <type name="TextClipType" c:type="AtspiTextClipType"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_caret_offset"
              c:identifier="atspi_text_get_caret_offset"
              throws="1">
        <doc xml:whitespace="preserve">Gets the current offset of the text caret in an #AtspiText object.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #gint indicating the current position of the text caret.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </method>
      <method name="get_character_at_offset"
              c:identifier="atspi_text_get_character_at_offset"
              throws="1">
        <doc xml:whitespace="preserve">Gets the character at a given offset for an #AtspiText object.

UCS-4 unicode code point of the given character, or
0xFFFFFFFF if the character in question cannot be represented
in the UCS-4 encoding.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #guint  representing the</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint indicating the text offset where the desired character is located.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_character_count"
              c:identifier="atspi_text_get_character_count"
              throws="1">
        <doc xml:whitespace="preserve">Gets the character count of an #AccessibleText object.

characters in the #AccessibleText object.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #gint indicating the total number of</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </method>
      <method name="get_character_extents"
              c:identifier="atspi_text_get_character_extents"
              throws="1">
        <doc xml:whitespace="preserve">Gets a bounding box containing the glyph representing
the character at a particular text offset.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">An #AtspiRect specifying the position and size of the character.</doc>
          <type name="Rect" c:type="AtspiRect*"/>
        </return-value>
        <parameters>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint indicating the offset of the text character for whom boundary information is requested.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AccessibleCoordType indicating the coordinate system to use for the returned values.</doc>
            <type name="CoordType" c:type="AtspiCoordType"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_default_attributes"
              c:identifier="atspi_text_get_default_attributes"
              throws="1">
        <doc xml:whitespace="preserve">Gets the default attributes applied to an #AtspiText
object. The text attributes correspond to CSS attributes 
where possible. The combination of this attribute set and
the attributes reported by #atspi_text_get_attributes
describes the entire set of text attributes over a range.

containing the default attributes applied to a text object,
(exclusive of explicitly-set attributes), encoded as UTF-8.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a #GHashTable</doc>
          <type name="GLib.HashTable" c:type="GHashTable*">
            <type name="utf8"/>
            <type name="utf8"/>
          </type>
        </return-value>
      </method>
      <method name="get_n_selections"
              c:identifier="atspi_text_get_n_selections"
              throws="1">
        <doc xml:whitespace="preserve">Gets the number of active non-contiguous selections for an
#AtspiText object.

number of non-contiguous text selections active
within an #AtspiText object.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #gint indicating the current</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </method>
      <method name="get_offset_at_point"
              c:identifier="atspi_text_get_offset_at_point"
              throws="1">
        <doc xml:whitespace="preserve">Gets the character offset into the text at a given point.

in the specified coordinate system.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the offset (as a #gint) at the point (@x, @y)</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="x" transfer-ownership="none">
            <doc xml:whitespace="preserve">the x coordinate of the point to be queried.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:whitespace="preserve">the y coordinate of the point to be queried.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtspiCoordType indicating the coordinate system in which the values should be returned.</doc>
            <type name="CoordType" c:type="AtspiCoordType"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_range_extents"
              c:identifier="atspi_text_get_range_extents"
              throws="1">
        <doc xml:whitespace="preserve">Gets the bounding box for text within a range in an  #AtspiText object.

of text.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">An #AtspiRect giving the position and size of the specified range</doc>
          <type name="Rect" c:type="AtspiRect*"/>
        </return-value>
        <parameters>
          <parameter name="start_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint indicating the offset of the first text character for whom boundary information is requested.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="end_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint indicating the offset of the text character after the last character for whom boundary information is requested.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtspiCoordType indicating the coordinate system to use for the returned values.</doc>
            <type name="CoordType" c:type="AtspiCoordType"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_selection"
              c:identifier="atspi_text_get_selection"
              throws="1">
        <doc xml:whitespace="preserve">Gets the bounds of the @selection_num-th active text selection for an
#AtspiText object.</doc>
        <return-value transfer-ownership="full">
          <type name="Range" c:type="AtspiRange*"/>
        </return-value>
        <parameters>
          <parameter name="selection_num" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint indicating which selection to query.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_text" c:identifier="atspi_text_get_text" throws="1">
        <doc xml:whitespace="preserve">Gets a range of text from an #AtspiText object.  The number of bytes
in the returned string may exceed either end_offset or start_offset, since
UTF-8 is a variable-width encoding.

to @end_offset-1, inclusive, encoded as UTF-8.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a text string containing characters from @start_offset</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="start_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint indicating the start of the desired text range.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="end_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint indicating the first character past the desired range.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_text_after_offset"
              c:identifier="atspi_text_get_text_after_offset"
              throws="1">
        <doc xml:whitespace="preserve">Gets delimited text from an #AtspiText object which follows a given
text offset.

delimited text, both of whose delimiting boundaries are after or
inclusive of the current offset, or an empty string if no such
text exists.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtspiTextRange containing a UTF-8 string representing the</doc>
          <type name="TextRange" c:type="AtspiTextRange*"/>
        </return-value>
        <parameters>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint indicating the offset from which the delimiter search is based.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtspiTextBoundaryType indicating whether the desired text string is a word, sentence, line, or attribute run.</doc>
            <type name="TextBoundaryType" c:type="AtspiTextBoundaryType"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_text_at_offset"
              c:identifier="atspi_text_get_text_at_offset"
              throws="1">
        <doc xml:whitespace="preserve">Gets delimited text from an #AtspiText object which includes a given
text offset.

delimited text, whose delimiting boundaries bracket the
current offset, or an empty string if no such text exists.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtspiTextRange containing a UTF-8 string representing the</doc>
          <type name="TextRange" c:type="AtspiTextRange*"/>
        </return-value>
        <parameters>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint indicating the offset from which the delimiter search is based.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtspiTextBoundaryType indicating whether the desired text string is a word, sentence, line, or attribute run.</doc>
            <type name="TextBoundaryType" c:type="AtspiTextBoundaryType"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_text_before_offset"
              c:identifier="atspi_text_get_text_before_offset"
              throws="1">
        <doc xml:whitespace="preserve">Gets delimited text from an #AtspiText object which precedes a given
text offset.

delimited text, both of whose delimiting boundaries are before the
current offset, or an empty string if no such text exists.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtspiTextRange containing a UTF-8 string representing the</doc>
          <type name="TextRange" c:type="AtspiTextRange*"/>
        </return-value>
        <parameters>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint indicating the offset from which the delimiter search is based.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:whitespace="preserve">an #AtspiTextBoundaryType indicating whether the desired text string is a word, sentence, line, or attribute run.</doc>
            <type name="TextBoundaryType" c:type="AtspiTextBoundaryType"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_selection"
              c:identifier="atspi_text_remove_selection"
              throws="1">
        <doc xml:whitespace="preserve">De-selects a text selection.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if successful, #FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="selection_num" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint indicating which text selection to remove.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_caret_offset"
              c:identifier="atspi_text_set_caret_offset"
              throws="1">
        <doc xml:whitespace="preserve">Moves the text caret to a given position.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if successful, #FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="new_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">the offset to which the text caret is to be moved.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_selection"
              c:identifier="atspi_text_set_selection"
              throws="1">
        <doc xml:whitespace="preserve">Changes the bounds of an existing #AtspiText text selection.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if successful, #FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="selection_num" transfer-ownership="none">
            <doc xml:whitespace="preserve">a zero-offset index indicating which text selection to modify.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="start_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint indicating the new starting offset for the selection.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="end_offset" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gint indicating the desired new offset of the first character after the selection.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
    </interface>
    <enumeration name="TextBoundaryType" c:type="AtspiTextBoundaryType">
      <doc xml:whitespace="preserve">Specifies the boundary conditions determining a run of text as returned from
#atspi_text_get_text_at_offset, #atspi_text_get_text_after_offset, and
#atspi_text_get_text_before_offset.</doc>
      <member name="char" value="0" c:identifier="ATSPI_TEXT_BOUNDARY_CHAR"/>
      <member name="word_start"
              value="1"
              c:identifier="ATSPI_TEXT_BOUNDARY_WORD_START"/>
      <member name="word_end"
              value="2"
              c:identifier="ATSPI_TEXT_BOUNDARY_WORD_END"/>
      <member name="sentence_start"
              value="3"
              c:identifier="ATSPI_TEXT_BOUNDARY_SENTENCE_START"/>
      <member name="sentence_end"
              value="4"
              c:identifier="ATSPI_TEXT_BOUNDARY_SENTENCE_END"/>
      <member name="line_start"
              value="5"
              c:identifier="ATSPI_TEXT_BOUNDARY_LINE_START"/>
      <member name="line_end"
              value="6"
              c:identifier="ATSPI_TEXT_BOUNDARY_LINE_END"/>
    </enumeration>
    <enumeration name="TextClipType" c:type="AtspiTextClipType">
      <doc xml:whitespace="preserve">Enumeration used by interface #AtspiText to indicate
how to treat characters intersecting bounding boxes.</doc>
      <member name="none" value="0" c:identifier="ATSPI_TEXT_CLIP_NONE"/>
      <member name="min" value="1" c:identifier="ATSPI_TEXT_CLIP_MIN"/>
      <member name="max" value="2" c:identifier="ATSPI_TEXT_CLIP_MAX"/>
      <member name="both" value="3" c:identifier="ATSPI_TEXT_CLIP_BOTH"/>
    </enumeration>
    <record name="TextRange"
            c:type="AtspiTextRange"
            glib:type-name="AtspiTextRange"
            glib:get-type="atspi_text_range_get_type"
            c:symbol-prefix="text_range">
      <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>
    <interface name="Value"
               c:symbol-prefix="value"
               c:type="AtspiValue"
               glib:type-name="AtspiValue"
               glib:get-type="atspi_value_get_type">
      <method name="get_current_value"
              c:identifier="atspi_value_get_current_value"
              throws="1">
        <doc xml:whitespace="preserve">Gets the current value for an #AtspiValue.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the current value for this object.</doc>
          <type name="gdouble" c:type="gdouble"/>
        </return-value>
      </method>
      <method name="get_maximum_value"
              c:identifier="atspi_value_get_maximum_value"
              throws="1">
        <doc xml:whitespace="preserve">Gets the maximum allowed value for an #AtspiValue.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the maximum allowed value for this object.</doc>
          <type name="gdouble" c:type="gdouble"/>
        </return-value>
      </method>
      <method name="get_minimum_increment"
              c:identifier="atspi_value_get_minimum_increment"
              throws="1">
        <doc xml:whitespace="preserve">Gets the minimum increment by which an #AtspiValue can be adjusted.

zero if the minimum increment cannot be determined.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the minimum increment by which the value may be changed, or</doc>
          <type name="gdouble" c:type="gdouble"/>
        </return-value>
      </method>
      <method name="get_minimum_value"
              c:identifier="atspi_value_get_minimum_value"
              throws="1">
        <doc xml:whitespace="preserve">Gets the minimum allowed value for an #AtspiValue.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the minimum allowed value for this object.</doc>
          <type name="gdouble" c:type="gdouble"/>
        </return-value>
      </method>
      <method name="set_current_value"
              c:identifier="atspi_value_set_current_value"
              throws="1">
        <doc xml:whitespace="preserve">Sets the current value of an #AtspiValue.

#FALSE otherwise.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if the value could be assigned the specified value,</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="new_value" transfer-ownership="none">
            <doc xml:whitespace="preserve">a #gdouble value which is the desired new value of the object.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
    </interface>
    <record name="_KeySet" c:type="_AtspiKeySet">
      <field name="keysyms" writable="1">
        <type name="guint" c:type="guint*"/>
      </field>
      <field name="keycodes" writable="1">
        <type name="gushort" c:type="gushort*"/>
      </field>
      <field name="keystrings" writable="1">
        <type name="utf8" c:type="gchar**"/>
      </field>
      <field name="len" writable="1">
        <type name="gshort" c:type="gshort"/>
      </field>
    </record>
    <function name="dbus_connection_setup_with_g_main"
              c:identifier="atspi_dbus_connection_setup_with_g_main"
              introspectable="0">
      <doc xml:whitespace="preserve">Sets the watch and timeout functions of a #DBusConnection
to integrate the connection with the GLib main loop.
Pass in #NULL for the #GMainContext unless you're
doing something specialized.

If called twice for the same context, does nothing the second
time. If called once with context A and once with context B,
context B replaces context A as the context monitoring the
connection.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="connection" transfer-ownership="none">
          <doc xml:whitespace="preserve">the connection</doc>
          <type c:type="DBusConnection*"/>
        </parameter>
        <parameter name="context" transfer-ownership="none">
          <doc xml:whitespace="preserve">the #GMainContext or #NULL for default context</doc>
          <type name="GLib.MainContext" c:type="GMainContext*"/>
        </parameter>
      </parameters>
    </function>
    <function name="dbus_server_setup_with_g_main"
              c:identifier="atspi_dbus_server_setup_with_g_main"
              introspectable="0">
      <doc xml:whitespace="preserve">Sets the watch and timeout functions of a #DBusServer
to integrate the server with the GLib main loop.
In most cases the context argument should be #NULL.

If called twice for the same context, does nothing the second
time. If called once with context A and once with context B,
context B replaces context A as the context monitoring the
connection.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="server" transfer-ownership="none">
          <doc xml:whitespace="preserve">the server</doc>
          <type c:type="DBusServer*"/>
        </parameter>
        <parameter name="context" transfer-ownership="none">
          <doc xml:whitespace="preserve">the #GMainContext or #NULL for default</doc>
          <type name="GLib.MainContext" c:type="GMainContext*"/>
        </parameter>
      </parameters>
    </function>
    <function name="deregister_device_event_listener"
              c:identifier="atspi_deregister_device_event_listener"
              throws="1">
      <doc xml:whitespace="preserve">Removes a device event listener from the registry's listener queue,
ceasing notification of events of the specified type.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">#TRUE if successful, otherwise #FALSE.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="listener" transfer-ownership="none">
          <doc xml:whitespace="preserve">a pointer to the #AtspiDeviceListener for which device events are requested.</doc>
          <type name="DeviceListener" c:type="AtspiDeviceListener*"/>
        </parameter>
        <parameter name="filter" transfer-ownership="none">
          <doc xml:whitespace="preserve">Unused parameter.</doc>
          <type name="gpointer" c:type="void*"/>
        </parameter>
      </parameters>
    </function>
    <function name="deregister_keystroke_listener"
              c:identifier="atspi_deregister_keystroke_listener"
              throws="1">
      <doc xml:whitespace="preserve">Removes a keystroke event listener from the registry's listener queue,
ceasing notification of events with modifiers matching @modmask.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">#TRUE if successful, otherwise #FALSE.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="listener" transfer-ownership="none">
          <doc xml:whitespace="preserve">a pointer to the #AtspiDeviceListener for which keystroke events are requested.</doc>
          <type name="DeviceListener" c:type="AtspiDeviceListener*"/>
        </parameter>
        <parameter name="key_set" transfer-ownership="none" allow-none="1">
          <doc xml:whitespace="preserve">a pointer to the #AtspiKeyDefinition array indicating which keystroke events are requested, or NULL to indicate that all keycodes and keyvals for the specified modifier set are to be included.</doc>
          <array name="GLib.Array" c:type="GArray*">
            <type name="KeyDefinition"/>
          </array>
        </parameter>
        <parameter name="modmask" transfer-ownership="none">
          <doc xml:whitespace="preserve">the key modifier mask for which this listener is to be 'deregistered' (of type #AtspiKeyMaskType).</doc>
          <type name="KeyMaskType" c:type="AtspiKeyMaskType"/>
        </parameter>
        <parameter name="event_types" transfer-ownership="none">
          <doc xml:whitespace="preserve">an #AtspiKeyMaskType mask indicating which types of key events were requested (#ATSPI_KEY_PRESSED, etc.).</doc>
          <type name="KeyEventMask" c:type="AtspiKeyEventMask"/>
        </parameter>
      </parameters>
    </function>
    <function name="event_main"
              c:identifier="atspi_event_main"
              moved-to="Event.main">
      <doc xml:whitespace="preserve">Starts/enters the main event loop for the AT-SPI services.

NOTE: This method does not return control; it is exited via a call to
#atspi_event_quit from within an event handler.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
    <function name="event_quit"
              c:identifier="atspi_event_quit"
              moved-to="Event.quit">
      <doc xml:whitespace="preserve">Quits the last main event loop for the AT-SPI services,
See: #atspi_event_main</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
    <function name="exit" c:identifier="atspi_exit">
      <doc xml:whitespace="preserve">Disconnects from #AtspiRegistry instances and releases 
any floating resources. Call only once at exit.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">0 if there were no leaks, otherwise other integer values.</doc>
        <type name="gint" c:type="int"/>
      </return-value>
    </function>
    <function name="generate_keyboard_event"
              c:identifier="atspi_generate_keyboard_event"
              throws="1">
      <doc xml:whitespace="preserve">Synthesizes a keyboard event (as if a hardware keyboard event occurred in the
current UI context).</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">#TRUE if successful, otherwise #FALSE.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="keyval" transfer-ownership="none">
          <doc xml:whitespace="preserve">a #gint indicating the keycode or keysym of the key event being synthesized.</doc>
          <type name="glong" c:type="glong"/>
        </parameter>
        <parameter name="keystring" transfer-ownership="none">
          <doc xml:whitespace="preserve">an (optional) UTF-8 string which, if @keyval is NULL, indicates a 'composed' keyboard input string being synthesized; this type of keyboard event synthesis does not emulate hardware keypresses but injects the string as though a composing input method (such as XIM) were used.</doc>
          <type name="utf8" c:type="gchar*"/>
        </parameter>
        <parameter name="synth_type" transfer-ownership="none">
          <doc xml:whitespace="preserve">an #AtspiKeySynthType flag indicating whether @keyval is to be interpreted as a keysym rather than a keycode (ATSPI_KEYSYM), or whether to synthesize ATSPI_KEY_PRESS, ATSPI_KEY_RELEASE, or both (ATSPI_KEY_PRESSRELEASE).</doc>
          <type name="KeySynthType" c:type="AtspiKeySynthType"/>
        </parameter>
      </parameters>
    </function>
    <function name="generate_mouse_event"
              c:identifier="atspi_generate_mouse_event"
              throws="1">
      <doc xml:whitespace="preserve">Synthesizes a mouse event at a specific screen coordinate.
Most AT clients should use the #AccessibleAction interface when
tempted to generate mouse events, rather than this method.
Event names: b1p = button 1 press; b2r = button 2 release;
b3c = button 3 click; b2d = button 2 double-click;
abs = absolute motion; rel = relative motion.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">#TRUE if successful, otherwise #FALSE.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="x" transfer-ownership="none">
          <doc xml:whitespace="preserve">a #glong indicating the screen x coordinate of the mouse event.</doc>
          <type name="glong" c:type="glong"/>
        </parameter>
        <parameter name="y" transfer-ownership="none">
          <doc xml:whitespace="preserve">a #glong indicating the screen y coordinate of the mouse event.</doc>
          <type name="glong" c:type="glong"/>
        </parameter>
        <parameter name="name" transfer-ownership="none">
          <doc xml:whitespace="preserve">a string indicating which mouse event to be synthesized (e.g. "b1p", "b1c", "b2r", "rel", "abs").</doc>
          <type name="utf8" c:type="gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="get_a11y_bus"
              c:identifier="atspi_get_a11y_bus"
              introspectable="0">
      <return-value>
        <type c:type="DBusConnection*"/>
      </return-value>
    </function>
    <function name="get_desktop" c:identifier="atspi_get_desktop">
      <doc xml:whitespace="preserve">Gets the virtual desktop indicated by index @i.
NOTE: currently multiple virtual desktops are not implemented;
as a consequence, any @i value different from 0 will not return a
virtual desktop - instead it will return NULL.

#AtspiAccessible representation.</doc>
      <return-value transfer-ownership="full">
        <doc xml:whitespace="preserve">a pointer to the @i-th virtual desktop's</doc>
        <type name="Accessible" c:type="AtspiAccessible*"/>
      </return-value>
      <parameters>
        <parameter name="i" transfer-ownership="none">
          <doc xml:whitespace="preserve">a #gint indicating which of the accessible desktops is to be returned.</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
      </parameters>
    </function>
    <function name="get_desktop_count" c:identifier="atspi_get_desktop_count">
      <doc xml:whitespace="preserve">Gets the number of virtual desktops.
NOTE: multiple virtual desktops are not implemented yet; as a 
consequence, this function always returns 1.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">a #gint indicating the number of active virtual desktops.</doc>
        <type name="gint" c:type="gint"/>
      </return-value>
    </function>
    <function name="get_desktop_list" c:identifier="atspi_get_desktop_list">
      <doc xml:whitespace="preserve">Gets the list of virtual desktops.  On return, @list will point
to a newly-created, NULL terminated array of virtual desktop
pointers.
It is the responsibility of the caller to free this array when
it is no longer needed.
NOTE: currently multiple virtual desktops are not implemented;
this implementation always returns a #Garray with a single
#AtspiAccessible desktop.</doc>
      <return-value transfer-ownership="full">
        <doc xml:whitespace="preserve">a #GArray of desktops.</doc>
        <array name="GLib.Array" c:type="GArray*">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </return-value>
    </function>
    <function name="init" c:identifier="atspi_init">
      <doc xml:whitespace="preserve">Connects to the accessibility registry and initializes the SPI.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">0 on success, otherwise an integer error code.</doc>
        <type name="gint" c:type="int"/>
      </return-value>
    </function>
    <function name="register_device_event_listener"
              c:identifier="atspi_register_device_event_listener"
              throws="1">
      <doc xml:whitespace="preserve">Registers a listener for device events, for instance button events.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">#TRUE if successful, otherwise #FALSE.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="listener" transfer-ownership="none">
          <doc xml:whitespace="preserve">a pointer to the #AtspiDeviceListener which requests the events.</doc>
          <type name="DeviceListener" c:type="AtspiDeviceListener*"/>
        </parameter>
        <parameter name="event_types" transfer-ownership="none">
          <doc xml:whitespace="preserve">an #AtspiDeviceEventMask mask indicating which types of key events are requested (#ATSPI_KEY_PRESSED, etc.).</doc>
          <type name="DeviceEventMask" c:type="AtspiDeviceEventMask"/>
        </parameter>
        <parameter name="filter" transfer-ownership="none">
          <doc xml:whitespace="preserve">Unused parameter.</doc>
          <type name="gpointer" c:type="void*"/>
        </parameter>
      </parameters>
    </function>
    <function name="register_keystroke_listener"
              c:identifier="atspi_register_keystroke_listener"
              throws="1">
      <doc xml:whitespace="preserve">Registers a listener for keystroke events, either pre-emptively for
all windows (ATSPI_KEYLISTENER_ALL_WINDOWS),
non-preemptively (ATSPI_KEYLISTENER_NOSYNC), or
pre-emptively at the toolkit level (ATSPI_KEYLISTENER_CANCONSUME).
If ALL_WINDOWS or CANCONSUME are used, the event is consumed
upon receipt if one of @listener's callbacks returns #TRUE 
(other sync_type values may be available in the future).</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">#TRUE if successful, otherwise #FALSE.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="listener" transfer-ownership="none">
          <doc xml:whitespace="preserve">a pointer to the #AtspiDeviceListener for which keystroke events are requested.</doc>
          <type name="DeviceListener" c:type="AtspiDeviceListener*"/>
        </parameter>
        <parameter name="key_set" transfer-ownership="none" allow-none="1">
          <doc xml:whitespace="preserve">a pointer to the #AtspiKeyDefinition array indicating which keystroke events are requested, or NULL to indicate that all keycodes and keyvals for the specified modifier set are to be included.</doc>
          <array name="GLib.Array" c:type="GArray*">
            <type name="KeyDefinition"/>
          </array>
        </parameter>
        <parameter name="modmask" transfer-ownership="none">
          <doc xml:whitespace="preserve">an #AtspiKeyMaskType mask indicating which key event modifiers must be set in combination with @keys, events will only be reported for key events for which all modifiers in @modmask are set.  If you wish to listen for events with multiple modifier combinations, you must call #atspi_register_keystroke_listener once for each combination.</doc>
          <type name="KeyMaskType" c:type="AtspiKeyMaskType"/>
        </parameter>
        <parameter name="event_types" transfer-ownership="none">
          <doc xml:whitespace="preserve">an #AtspiKeyMaskType mask indicating which types of key events are requested (ATSPI_KEY_PRESSED etc.).</doc>
          <type name="KeyEventMask" c:type="AtspiKeyEventMask"/>
        </parameter>
        <parameter name="sync_type" transfer-ownership="none">
          <doc xml:whitespace="preserve">an #AtspiKeyListenerSyncType parameter indicating the behavior of the notification/listener transaction.</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
      </parameters>
    </function>
    <function name="role_get_name" c:identifier="atspi_role_get_name">
      <doc xml:whitespace="preserve">Gets a localizable string that indicates the name of an #AtspiRole.
&lt;em&gt;DEPRECATED.&lt;/em&gt;</doc>
      <return-value transfer-ownership="full">
        <doc xml:whitespace="preserve">a localizable string name for an #AtspiRole enumerated type.</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="role" transfer-ownership="none">
          <doc xml:whitespace="preserve">an #AtspiRole object to query.</doc>
          <type name="Role" c:type="AtspiRole"/>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
