<?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.1"
             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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to an #AtspiAction interface instance, or NULL if @obj does not implement #AtspiAction.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">the containing #AtspiApplication instance for this object.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">The name-value-pair attributes assigned to this object.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">The name-value-pair attributes assigned to this object.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to the #AtspiAccessible child object at index @child_index or NULL on exception.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #long indicating the number of #AtspiAccessible children contained by an #AtspiAccessible object or -1 on exception.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to an #AtspiCollection interface instance, or NULL if @obj does not implement #AtspiCollection.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to an #AtspiComponent interface instance, or NULL if @obj does not implement #AtspiComponent.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a UTF-8 string describing the #AtspiAccessible object or NULL on exception.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to an #AtspiDocument interface instance, or NULL if @obj does not implement #AtspiDocument.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to an #AtspiEditableText interface instance, or NULL if @obj does not implement #AtspiEditableText.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">the #AtspiHyperlink object associated with the given #AtspiAccessible, or NULL if not supported.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to an #AtspiHypertext interface instance, or NULL if @obj does not implement #AtspiHypertext.</doc>
          <type name="Hypertext" c:type="AtspiHypertext*"/>
        </return-value>
      </method>
      <method name="get_id" c:identifier="atspi_accessible_get_id" throws="1">
        <doc xml:whitespace="preserve">Gets the application id for a #AtspiAccessible object.
Only works on application root objects.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a positive #gint indicating the id for the #AtspiAccessible object or -1 on exception.</doc>
          <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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to an #AtspiImage interface instance, or NULL if @obj does not implement #AtspiImage.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #glong indicating the index of the #AtspiAccessible object in its parent, or -1 if @obj has no containing parent or on exception.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A #GArray of strings describing the interfaces supported by the object.  Interfaces are denoted in short-hand (i.e. "Component", "Text" etc.).</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 ().</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a localized, UTF-8 string specifying the type of UI role played by an #AtspiAccessible object.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a UTF-8 string indicating the name of the #AtspiAccessible object or NULL on exception.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to the #AtspiAccessible object which contains the given #AtspiAccessible instance, or NULL if the @obj has no parent container.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a #GArray of #AtspiRelation pointers or NULL on exception.</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 ().</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a UTF-8 string specifying the type of UI role played by an #AtspiAccessible object.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to an #AtspiSelection interface instance, or NULL if @obj does not implement #AtspiSelection.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to an #AtspiStateSet representing an object's current state set.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to an #AtspiTable interface instance, or NULL if @obj does not implement #AtspiTable.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to an #AtspiText interface instance, or NULL if @obj does not implement #AtspiText.</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 toolkit version 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 version for the #AtspiAccessible object or NULL on exception.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to an #AtspiValue interface instance, or NULL if @obj does not implement #AtspiValue.</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">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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a UTF-8 string which can be parsed to determine the @i-th invocable action's keybindings.</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_localized_name"
              c:identifier="atspi_action_get_localized_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 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>
      <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 non-localized 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="_AtspiAccessible*"/>
      </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>
      <field name="time_added" writable="1">
        <type name="gpointer" c:type="timeval"/>
      </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">Gets all #AtspiAccessible objects from the @collection matching a given
@rule.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">All #AtspiAccessible objects matching the given match rule.</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 be sorted.</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">Gets all #AtspiAccessible objects from the @collection, before  
@current_object, matching a given @rule.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">All #AtspiAccessible objects matching the given match rule that preceed @current_object.</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 be sorted.</doc>
            <type name="CollectionSortOrder"
                  c:type="AtspiCollectionSortOrder"/>
          </parameter>
          <parameter name="tree" transfer-ownership="none">
            <doc xml:whitespace="preserve">An #AtspiCollectionTreeTraversalType specifying restrictions on the objects to be traversed.</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">Gets all #AtspiAccessible objects from the @collection, after 
@current_object, matching a given @rule.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">All #AtspiAccessible objects matching the given match rule after @current_object.</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 be sorted.</doc>
            <type name="CollectionSortOrder"
                  c:type="AtspiCollectionSortOrder"/>
          </parameter>
          <parameter name="tree" transfer-ownership="none">
            <doc xml:whitespace="preserve">An #AtspiCollectionTreeTraversalType specifying restrictions on the objects to be traversed.</doc>
            <type name="CollectionTreeTraversalType"
                  c:type="AtspiCollectionTreeTraversalType"/>
          </parameter>
          <parameter name="limit_scope" transfer-ownership="none">
            <doc xml:whitespace="preserve">If #TRUE, only descendants of @current_object's parent will be returned. Otherwise (if #FALSE), any accessible may be returned if it would preceed @current_object in a flattened hierarchy.</doc>
            <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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if the specified component contains the point (@x, @y), #FALSE otherwise.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to an #AtspiAccessible child of the specified component which contains the point (@x, @y), or NULL if no child contains the point.</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)</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #gshort indicating the stacking order of the component in the MDI layer, or -1 if the component is not in the MDI layer.</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">
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if successful; #FALSE otherwise.  Moves the component to the specified position.</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">
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if successful; #FALSE otherwise.  Resizes the specified component to the given coordinates.</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="const 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.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">#TRUE if the client wishes to consume/preempt the event, preventing it from being relayed to the currently focussed application, #FALSE if the event delivery should proceed as normal.</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="const 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="const AtspiDeviceEvent*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <callback name="DeviceListenerSimpleCB"
              c:type="AtspiDeviceListenerSimpleCB">
      <doc xml:whitespace="preserve">Similar to #AtspiDeviceListenerCB, but with no user data.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">#TRUE if the client wishes to consume/preempt the event, preventing it from being relayed to the currently focussed application, #FALSE if the event delivery should proceed as normal.</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="const 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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a string corresponding to the value of the specified attribute, or an empty string if the attribute is unspecified for the object.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a #GHashTable containing the constant attributes of the document, as name-value pairs.</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="const 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="const 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="const 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="const 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="const 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="const 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="const 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="const 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="const 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="const 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">Gets the ending character offset of the text range associated with
      an #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">Gets the starting and ending character offsets of the text range
associated with an #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">Gets 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">Gets the object associated with a particular hyperlink anchor, as an
#AtspiAccessible.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtspiAccessible that represents the object associated with the @ith anchor of the specified #AtspiHyperlink.</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 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">Gets the starting character offset of the text range associated with
      an #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">Gets 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">Tells whether an #AtspiHyperlink object is still valid with respect to its
         originating hypertext object.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if the specified #AtspiHyperlink is still valid with respect to its originating #AtspiHypertext object, #FALSE otherwise.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">the #AtspiHyperlink object specified by @link_index.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the linkIndex of the #AtspiHyperlink active at character offset @character_offset, or -1 if there is no hyperlink at the specified character offset.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #gint indicating the number of #AtspiHyperlink objects 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>
          <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.</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, width, and height are specified.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to an #AtspiPoint where x and y correspond to the minimum coordinates of the displayed image.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to an #AtspiPoint where x corresponds to the image's width and y corresponds to the image's height.</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">
      <doc xml:whitespace="preserve">Specifies the type of a key listener event.
The values above can and should be bitwise-'OR'-ed
together, observing the compatibility limitations specified in the description of
each value.  For instance, #ATSPI_KEYLISTENER_ALL_WINDOWS | #ATSPI_KEYLISTENER_CANCONSUME is
a commonly used combination which gives the AT complete control over the delivery of matching
events.  However, such filters should be used sparingly as they may have a negative impact on 
system performance.</doc>
      <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">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 @states.</doc>
            <type name="CollectionMatchType"
                  c:type="AtspiCollectionMatchType"/>
          </parameter>
          <parameter name="attributes" transfer-ownership="none">
            <doc xml:whitespace="preserve">A #GHashTable specifying attributes to match.</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 interpret @attributes.</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 not applicable.</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 interpret @roles.</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 NULL if not applicable.  Interface names should be specified by their DBus names (org.a11y.Atspi.Accessible, org.a11y.Atspi.Component, etc).</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 interpret @interfaces.</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, 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.</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).</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #gint indicating how many target objects which the originating #AtspiAccessible object has the #AtspiRelation relationship with.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an #AtspiRelationType indicating the type of relation encapsulated in this #AtspiRelation object.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtspiAccessible which is the @i-th object with which the originating #AtspiAccessible has relationship specified in the #AtspiRelation 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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #gint indicating the number of #Accessible children of the #AtspiSelection implementor which are currently selected.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a pointer to a selected #AtspiAccessible child object, specified by @selected_child_index.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if the specified child is currently selected, #FALSE otherwise.</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">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 method initializes the state set.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtspiStateSet object containing all states contained on one of the two sets but not the other.</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">Determines whether a given #AtspiStateSet includes a given state; that is,
         whether @state is true for the @set in question.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if @state is true/included in the given #AtspiStateSet, otherwise #FALSE.</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 will be queried.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if the two #AtspiStateSets are equivalent, otherwise #FALSE.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A #GArray of state types representing the current 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">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="const 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 should be disabled.</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="_AtspiAccessible*"/>
      </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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtspiAccessible object representing the specified table cell.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtspiAccessible object that serves as the table's caption.</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</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #gint indicating the first column spanned by the child of a table, at the specified 1-D (zero-offset) @index.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtspiAccessible representation of the specified table column, if available.</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</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #gint which serves as the index of a specified cell in the table, in a form usable by #atspi_get_child_at_index.</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</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #gint indicating the first row spanned by the child of a table, at the specified 1-D (zero-offset) @index.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if the index is associated with a valid table cell, #FALSE if the index does not correspond to a cell.  If #FALSE is returned, the values of the out parameters are undefined.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtspiAccessible representation of the specified table row, if available.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an array of #gint values, specifying which columns are currently selected.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an array of #gint values, specifying which rows are currently selected.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtspiAccessible object that serves as the table's summary (often a reduced #AtspiTable).</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if the specified column was successfully de-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 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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if the specified row was successfully de-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 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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a #GHashTable with attributes defined at the indicated offset, optionally including the 'default' ones.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">the value of a given attribute at the given offset, or NULL if not present.</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;</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a #GHashTable describing the attributes at the given character offset.</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).</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a null-terminated list of pointers to #AtspiTextRange structs detailing the bounded text.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #guint  representing the 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>
          <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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #gint indicating the total number of characters in the #AccessibleText object.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a #GHashTable containing the default attributes applied to a text object, (exclusive of explicitly-set attributes), encoded as UTF-8.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">a #gint indicating the current number of non-contiguous text selections active within an #AtspiText object.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the offset (as a #gint) at the point (@x, @y) in the specified coordinate system.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">An #AtspiRect giving the position and size of the specified range of text.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">a text string containing characters from @start_offset to @end_offset-1, inclusive, encoded as UTF-8.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtspiTextRange containing a UTF-8 string representing the 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>
          <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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtspiTextRange containing a UTF-8 string representing the delimited text, whose delimiting boundaries bracket the current offset, or an empty string if no such text exists.</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.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">an #AtspiTextRange containing a UTF-8 string representing the delimited text, both of whose delimiting boundaries are before the current offset, or an empty string if no such text exists.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the minimum increment by which the value may be changed, or zero if the minimum increment cannot be determined.</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.</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">#TRUE if the value could be assigned the specified value, #FALSE otherwise.</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="const 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="const 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.</doc>
      <return-value transfer-ownership="full">
        <doc xml:whitespace="preserve">a pointer to the @i-th virtual desktop's #AtspiAccessible representation.</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>
    <function name="set_timeout" c:identifier="atspi_set_timeout">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="val" transfer-ownership="none">
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="startup_time" transfer-ownership="none">
          <type name="gint" c:type="gint"/>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
